examples: adapt to new const types

This commit is contained in:
Michael McLoughlin
2018-12-26 17:08:58 -08:00
parent abd300c0e9
commit 662ae52758
8 changed files with 1274 additions and 1272 deletions

View File

@@ -7,9 +7,9 @@ TEXT ·Hash64(SB),0,$0-32
MOVQ data_base(FP), CX MOVQ data_base(FP), CX
MOVQ data_len+8(FP), BX MOVQ data_len+8(FP), BX
MOVQ $0xcbf29ce484222325, AX MOVQ $0xcbf29ce484222325, AX
MOVQ $0x100000001b3, BP MOVQ $0x00000100000001b3, BP
loop: loop:
CMPQ BX, $0x0 CMPQ BX, $0x00
JE done JE done
MOVBQZX (CX), DX MOVBQZX (CX), DX
XORQ DX, AX XORQ DX, AX

View File

@@ -59,17 +59,17 @@ func main() {
XORL(W(r-8), u) XORL(W(r-8), u)
XORL(W(r-14), u) XORL(W(r-14), u)
XORL(W(r-16), u) XORL(W(r-16), u)
ROLL(Imm(1), u) ROLL(U8(1), u)
} }
MOVL(u, W(r)) MOVL(u, W(r))
// Compute the next state register. // Compute the next state register.
t := GP32v() t := GP32v()
MOVL(a, t) MOVL(a, t)
ROLL(Imm(5), t) ROLL(U8(5), t)
ADDL(q.F(b, c, d), t) ADDL(q.F(b, c, d), t)
ADDL(e, t) ADDL(e, t)
ADDL(Imm(q.K), t) ADDL(U32(q.K), t)
ADDL(u, t) ADDL(u, t)
// Update registers. // Update registers.

View File

@@ -20,7 +20,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R13 BSWAPL R13
MOVL R13, (SP) MOVL R13, (SP)
MOVL R8, R14 MOVL R8, R14
ROLL $0x5, R14 ROLL $0x05, R14
MOVL R11, R15 MOVL R11, R15
XORL R10, R15 XORL R10, R15
ANDL R9, R15 ANDL R9, R15
@@ -34,7 +34,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R12 BSWAPL R12
MOVL R12, 4(SP) MOVL R12, 4(SP)
MOVL R14, R13 MOVL R14, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R10, R15 MOVL R10, R15
XORL R9, R15 XORL R9, R15
ANDL R8, R15 ANDL R8, R15
@@ -48,7 +48,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R11 BSWAPL R11
MOVL R11, 8(SP) MOVL R11, 8(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R9, R15 MOVL R9, R15
XORL R8, R15 XORL R8, R15
ANDL R14, R15 ANDL R14, R15
@@ -62,7 +62,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R10 BSWAPL R10
MOVL R10, 12(SP) MOVL R10, 12(SP)
MOVL R12, R11 MOVL R12, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R8, R15 MOVL R8, R15
XORL R14, R15 XORL R14, R15
ANDL R13, R15 ANDL R13, R15
@@ -76,7 +76,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R9 BSWAPL R9
MOVL R9, 16(SP) MOVL R9, 16(SP)
MOVL R11, R10 MOVL R11, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R14, R15 MOVL R14, R15
XORL R13, R15 XORL R13, R15
ANDL R12, R15 ANDL R12, R15
@@ -90,7 +90,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 20(SP) MOVL R8, 20(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R13, R15 MOVL R13, R15
XORL R12, R15 XORL R12, R15
ANDL R11, R15 ANDL R11, R15
@@ -104,7 +104,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 24(SP) MOVL R8, 24(SP)
MOVL R9, R14 MOVL R9, R14
ROLL $0x5, R14 ROLL $0x05, R14
MOVL R12, R15 MOVL R12, R15
XORL R11, R15 XORL R11, R15
ANDL R10, R15 ANDL R10, R15
@@ -118,7 +118,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 28(SP) MOVL R8, 28(SP)
MOVL R14, R13 MOVL R14, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R11, R15 MOVL R11, R15
XORL R10, R15 XORL R10, R15
ANDL R9, R15 ANDL R9, R15
@@ -132,7 +132,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 32(SP) MOVL R8, 32(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R10, R15 MOVL R10, R15
XORL R9, R15 XORL R9, R15
ANDL R14, R15 ANDL R14, R15
@@ -146,7 +146,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 36(SP) MOVL R8, 36(SP)
MOVL R12, R11 MOVL R12, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R9, R15 MOVL R9, R15
XORL R14, R15 XORL R14, R15
ANDL R13, R15 ANDL R13, R15
@@ -160,7 +160,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 40(SP) MOVL R8, 40(SP)
MOVL R11, R10 MOVL R11, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R14, R15 MOVL R14, R15
XORL R13, R15 XORL R13, R15
ANDL R12, R15 ANDL R12, R15
@@ -174,7 +174,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 44(SP) MOVL R8, 44(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R13, R15 MOVL R13, R15
XORL R12, R15 XORL R12, R15
ANDL R11, R15 ANDL R11, R15
@@ -188,7 +188,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 48(SP) MOVL R8, 48(SP)
MOVL R9, R14 MOVL R9, R14
ROLL $0x5, R14 ROLL $0x05, R14
MOVL R12, R15 MOVL R12, R15
XORL R11, R15 XORL R11, R15
ANDL R10, R15 ANDL R10, R15
@@ -202,7 +202,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 52(SP) MOVL R8, 52(SP)
MOVL R14, R13 MOVL R14, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R11, R15 MOVL R11, R15
XORL R10, R15 XORL R10, R15
ANDL R9, R15 ANDL R9, R15
@@ -216,7 +216,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL R8 BSWAPL R8
MOVL R8, 56(SP) MOVL R8, 56(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R10, R15 MOVL R10, R15
XORL R9, R15 XORL R9, R15
ANDL R14, R15 ANDL R14, R15
@@ -230,7 +230,7 @@ TEXT ·block(SB),0,$64-32
BSWAPL CX BSWAPL CX
MOVL CX, 60(SP) MOVL CX, 60(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R9, R11 MOVL R9, R11
XORL R14, R11 XORL R14, R11
ANDL R13, R11 ANDL R13, R11
@@ -244,10 +244,10 @@ TEXT ·block(SB),0,$64-32
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL (SP), CX XORL (SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, (SP) MOVL CX, (SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R14, R11 MOVL R14, R11
XORL R13, R11 XORL R13, R11
ANDL R12, R11 ANDL R12, R11
@@ -261,10 +261,10 @@ TEXT ·block(SB),0,$64-32
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 4(SP) MOVL CX, 4(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R13, R11 MOVL R13, R11
XORL R12, R11 XORL R12, R11
ANDL R8, R11 ANDL R8, R11
@@ -278,10 +278,10 @@ TEXT ·block(SB),0,$64-32
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 8(SP) MOVL CX, 8(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R12, R14 MOVL R12, R14
XORL R8, R14 XORL R8, R14
ANDL R10, R14 ANDL R10, R14
@@ -295,10 +295,10 @@ TEXT ·block(SB),0,$64-32
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 12(SP) MOVL CX, 12(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R8, R14 MOVL R8, R14
XORL R10, R14 XORL R10, R14
ANDL R9, R14 ANDL R9, R14
@@ -312,10 +312,10 @@ TEXT ·block(SB),0,$64-32
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 16(SP) MOVL CX, 16(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
XORL R9, R14 XORL R9, R14
XORL R10, R14 XORL R10, R14
@@ -328,10 +328,10 @@ TEXT ·block(SB),0,$64-32
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 20(SP) MOVL CX, 20(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
XORL R11, R14 XORL R11, R14
XORL R9, R14 XORL R9, R14
@@ -344,10 +344,10 @@ TEXT ·block(SB),0,$64-32
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 24(SP) MOVL CX, 24(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
XORL R13, R14 XORL R13, R14
XORL R11, R14 XORL R11, R14
@@ -360,10 +360,10 @@ TEXT ·block(SB),0,$64-32
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 28(SP) MOVL CX, 28(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
XORL R12, R14 XORL R12, R14
XORL R13, R14 XORL R13, R14
@@ -376,10 +376,10 @@ TEXT ·block(SB),0,$64-32
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 32(SP) MOVL CX, 32(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
XORL R8, R14 XORL R8, R14
XORL R12, R14 XORL R12, R14
@@ -392,10 +392,10 @@ TEXT ·block(SB),0,$64-32
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 36(SP) MOVL CX, 36(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
XORL R10, R14 XORL R10, R14
XORL R8, R14 XORL R8, R14
@@ -408,10 +408,10 @@ TEXT ·block(SB),0,$64-32
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 40(SP) MOVL CX, 40(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
XORL R9, R14 XORL R9, R14
XORL R10, R14 XORL R10, R14
@@ -424,10 +424,10 @@ TEXT ·block(SB),0,$64-32
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 44(SP) MOVL CX, 44(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
XORL R11, R14 XORL R11, R14
XORL R9, R14 XORL R9, R14
@@ -440,10 +440,10 @@ TEXT ·block(SB),0,$64-32
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 48(SP) MOVL CX, 48(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
XORL R13, R14 XORL R13, R14
XORL R11, R14 XORL R11, R14
@@ -456,10 +456,10 @@ TEXT ·block(SB),0,$64-32
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 52(SP) MOVL CX, 52(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
XORL R12, R14 XORL R12, R14
XORL R13, R14 XORL R13, R14
@@ -472,10 +472,10 @@ TEXT ·block(SB),0,$64-32
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 56(SP), CX XORL 56(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 56(SP) MOVL CX, 56(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
XORL R8, R14 XORL R8, R14
XORL R12, R14 XORL R12, R14
@@ -488,10 +488,10 @@ TEXT ·block(SB),0,$64-32
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 60(SP) MOVL CX, 60(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
XORL R10, R14 XORL R10, R14
XORL R8, R14 XORL R8, R14
@@ -504,10 +504,10 @@ TEXT ·block(SB),0,$64-32
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL (SP), CX XORL (SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, (SP) MOVL CX, (SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
XORL R9, R14 XORL R9, R14
XORL R10, R14 XORL R10, R14
@@ -520,10 +520,10 @@ TEXT ·block(SB),0,$64-32
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 4(SP) MOVL CX, 4(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
XORL R11, R14 XORL R11, R14
XORL R9, R14 XORL R9, R14
@@ -536,10 +536,10 @@ TEXT ·block(SB),0,$64-32
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 8(SP) MOVL CX, 8(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
XORL R13, R14 XORL R13, R14
XORL R11, R14 XORL R11, R14
@@ -552,10 +552,10 @@ TEXT ·block(SB),0,$64-32
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 12(SP) MOVL CX, 12(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
XORL R12, R14 XORL R12, R14
XORL R13, R14 XORL R13, R14
@@ -568,10 +568,10 @@ TEXT ·block(SB),0,$64-32
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 16(SP) MOVL CX, 16(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
XORL R8, R14 XORL R8, R14
XORL R12, R14 XORL R12, R14
@@ -584,10 +584,10 @@ TEXT ·block(SB),0,$64-32
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 20(SP) MOVL CX, 20(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
XORL R10, R14 XORL R10, R14
XORL R8, R14 XORL R8, R14
@@ -600,10 +600,10 @@ TEXT ·block(SB),0,$64-32
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 24(SP) MOVL CX, 24(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
XORL R9, R14 XORL R9, R14
XORL R10, R14 XORL R10, R14
@@ -616,10 +616,10 @@ TEXT ·block(SB),0,$64-32
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 28(SP) MOVL CX, 28(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
XORL R11, R14 XORL R11, R14
XORL R9, R14 XORL R9, R14
@@ -632,10 +632,10 @@ TEXT ·block(SB),0,$64-32
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 32(SP) MOVL CX, 32(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
ORL R13, R14 ORL R13, R14
ANDL R11, R14 ANDL R11, R14
@@ -651,10 +651,10 @@ TEXT ·block(SB),0,$64-32
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 36(SP) MOVL CX, 36(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
ORL R12, R14 ORL R12, R14
ANDL R13, R14 ANDL R13, R14
@@ -670,10 +670,10 @@ TEXT ·block(SB),0,$64-32
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 40(SP) MOVL CX, 40(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
ORL R8, R14 ORL R8, R14
ANDL R12, R14 ANDL R12, R14
@@ -689,10 +689,10 @@ TEXT ·block(SB),0,$64-32
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 44(SP) MOVL CX, 44(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
ORL R10, R14 ORL R10, R14
ANDL R8, R14 ANDL R8, R14
@@ -708,10 +708,10 @@ TEXT ·block(SB),0,$64-32
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 48(SP) MOVL CX, 48(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
ORL R9, R14 ORL R9, R14
ANDL R10, R14 ANDL R10, R14
@@ -727,10 +727,10 @@ TEXT ·block(SB),0,$64-32
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 52(SP) MOVL CX, 52(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
ORL R11, R14 ORL R11, R14
ANDL R9, R14 ANDL R9, R14
@@ -746,10 +746,10 @@ TEXT ·block(SB),0,$64-32
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 56(SP), CX XORL 56(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 56(SP) MOVL CX, 56(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
ORL R13, R14 ORL R13, R14
ANDL R11, R14 ANDL R11, R14
@@ -765,10 +765,10 @@ TEXT ·block(SB),0,$64-32
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 60(SP) MOVL CX, 60(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
ORL R12, R14 ORL R12, R14
ANDL R13, R14 ANDL R13, R14
@@ -784,10 +784,10 @@ TEXT ·block(SB),0,$64-32
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL (SP), CX XORL (SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, (SP) MOVL CX, (SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
ORL R8, R14 ORL R8, R14
ANDL R12, R14 ANDL R12, R14
@@ -803,10 +803,10 @@ TEXT ·block(SB),0,$64-32
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 4(SP) MOVL CX, 4(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
ORL R10, R14 ORL R10, R14
ANDL R8, R14 ANDL R8, R14
@@ -822,10 +822,10 @@ TEXT ·block(SB),0,$64-32
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 8(SP) MOVL CX, 8(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
ORL R9, R14 ORL R9, R14
ANDL R10, R14 ANDL R10, R14
@@ -841,10 +841,10 @@ TEXT ·block(SB),0,$64-32
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 12(SP) MOVL CX, 12(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
ORL R11, R14 ORL R11, R14
ANDL R9, R14 ANDL R9, R14
@@ -860,10 +860,10 @@ TEXT ·block(SB),0,$64-32
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 16(SP) MOVL CX, 16(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
ORL R13, R14 ORL R13, R14
ANDL R11, R14 ANDL R11, R14
@@ -879,10 +879,10 @@ TEXT ·block(SB),0,$64-32
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 20(SP) MOVL CX, 20(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
ORL R12, R14 ORL R12, R14
ANDL R13, R14 ANDL R13, R14
@@ -898,10 +898,10 @@ TEXT ·block(SB),0,$64-32
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 24(SP) MOVL CX, 24(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
ORL R8, R14 ORL R8, R14
ANDL R12, R14 ANDL R12, R14
@@ -917,10 +917,10 @@ TEXT ·block(SB),0,$64-32
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 28(SP) MOVL CX, 28(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
ORL R10, R14 ORL R10, R14
ANDL R8, R14 ANDL R8, R14
@@ -936,10 +936,10 @@ TEXT ·block(SB),0,$64-32
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 32(SP) MOVL CX, 32(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
ORL R9, R14 ORL R9, R14
ANDL R10, R14 ANDL R10, R14
@@ -955,10 +955,10 @@ TEXT ·block(SB),0,$64-32
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 36(SP) MOVL CX, 36(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
ORL R11, R14 ORL R11, R14
ANDL R9, R14 ANDL R9, R14
@@ -974,10 +974,10 @@ TEXT ·block(SB),0,$64-32
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 40(SP) MOVL CX, 40(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
ORL R13, R14 ORL R13, R14
ANDL R11, R14 ANDL R11, R14
@@ -993,10 +993,10 @@ TEXT ·block(SB),0,$64-32
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 44(SP) MOVL CX, 44(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
ORL R12, R14 ORL R12, R14
ANDL R13, R14 ANDL R13, R14
@@ -1012,10 +1012,10 @@ TEXT ·block(SB),0,$64-32
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 48(SP) MOVL CX, 48(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
XORL R8, R14 XORL R8, R14
XORL R12, R14 XORL R12, R14
@@ -1028,10 +1028,10 @@ TEXT ·block(SB),0,$64-32
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 52(SP) MOVL CX, 52(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
XORL R10, R14 XORL R10, R14
XORL R8, R14 XORL R8, R14
@@ -1044,10 +1044,10 @@ TEXT ·block(SB),0,$64-32
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 56(SP), CX XORL 56(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 56(SP) MOVL CX, 56(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
XORL R9, R14 XORL R9, R14
XORL R10, R14 XORL R10, R14
@@ -1060,10 +1060,10 @@ TEXT ·block(SB),0,$64-32
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 60(SP) MOVL CX, 60(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
XORL R11, R14 XORL R11, R14
XORL R9, R14 XORL R9, R14
@@ -1076,10 +1076,10 @@ TEXT ·block(SB),0,$64-32
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL (SP), CX XORL (SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, (SP) MOVL CX, (SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
XORL R13, R14 XORL R13, R14
XORL R11, R14 XORL R11, R14
@@ -1092,10 +1092,10 @@ TEXT ·block(SB),0,$64-32
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 4(SP) MOVL CX, 4(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
XORL R12, R14 XORL R12, R14
XORL R13, R14 XORL R13, R14
@@ -1108,10 +1108,10 @@ TEXT ·block(SB),0,$64-32
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 8(SP) MOVL CX, 8(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
XORL R8, R14 XORL R8, R14
XORL R12, R14 XORL R12, R14
@@ -1124,10 +1124,10 @@ TEXT ·block(SB),0,$64-32
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 12(SP) MOVL CX, 12(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
XORL R10, R14 XORL R10, R14
XORL R8, R14 XORL R8, R14
@@ -1140,10 +1140,10 @@ TEXT ·block(SB),0,$64-32
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 16(SP) MOVL CX, 16(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
XORL R9, R14 XORL R9, R14
XORL R10, R14 XORL R10, R14
@@ -1156,10 +1156,10 @@ TEXT ·block(SB),0,$64-32
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 20(SP) MOVL CX, 20(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
XORL R11, R14 XORL R11, R14
XORL R9, R14 XORL R9, R14
@@ -1172,10 +1172,10 @@ TEXT ·block(SB),0,$64-32
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 24(SP) MOVL CX, 24(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
XORL R13, R14 XORL R13, R14
XORL R11, R14 XORL R11, R14
@@ -1188,10 +1188,10 @@ TEXT ·block(SB),0,$64-32
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 28(SP) MOVL CX, 28(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
XORL R12, R14 XORL R12, R14
XORL R13, R14 XORL R13, R14
@@ -1204,10 +1204,10 @@ TEXT ·block(SB),0,$64-32
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 32(SP) MOVL CX, 32(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
XORL R8, R14 XORL R8, R14
XORL R12, R14 XORL R12, R14
@@ -1220,10 +1220,10 @@ TEXT ·block(SB),0,$64-32
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 36(SP) MOVL CX, 36(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
XORL R10, R14 XORL R10, R14
XORL R8, R14 XORL R8, R14
@@ -1236,10 +1236,10 @@ TEXT ·block(SB),0,$64-32
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 40(SP) MOVL CX, 40(SP)
MOVL R13, R12 MOVL R13, R12
ROLL $0x5, R12 ROLL $0x05, R12
MOVL R11, R14 MOVL R11, R14
XORL R9, R14 XORL R9, R14
XORL R10, R14 XORL R10, R14
@@ -1252,10 +1252,10 @@ TEXT ·block(SB),0,$64-32
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 44(SP) MOVL CX, 44(SP)
MOVL R12, R8 MOVL R12, R8
ROLL $0x5, R8 ROLL $0x05, R8
MOVL R13, R14 MOVL R13, R14
XORL R11, R14 XORL R11, R14
XORL R9, R14 XORL R9, R14
@@ -1268,10 +1268,10 @@ TEXT ·block(SB),0,$64-32
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 48(SP) MOVL CX, 48(SP)
MOVL R8, R10 MOVL R8, R10
ROLL $0x5, R10 ROLL $0x05, R10
MOVL R12, R14 MOVL R12, R14
XORL R13, R14 XORL R13, R14
XORL R11, R14 XORL R11, R14
@@ -1284,10 +1284,10 @@ TEXT ·block(SB),0,$64-32
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 52(SP) MOVL CX, 52(SP)
MOVL R10, R9 MOVL R10, R9
ROLL $0x5, R9 ROLL $0x05, R9
MOVL R8, R14 MOVL R8, R14
XORL R12, R14 XORL R12, R14
XORL R13, R14 XORL R13, R14
@@ -1300,10 +1300,10 @@ TEXT ·block(SB),0,$64-32
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 56(SP), CX XORL 56(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 56(SP) MOVL CX, 56(SP)
MOVL R9, R11 MOVL R9, R11
ROLL $0x5, R11 ROLL $0x05, R11
MOVL R10, R14 MOVL R10, R14
XORL R8, R14 XORL R8, R14
XORL R12, R14 XORL R12, R14
@@ -1316,10 +1316,10 @@ TEXT ·block(SB),0,$64-32
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
ROLL $0x1, CX ROLL $0x01, CX
MOVL CX, 60(SP) MOVL CX, 60(SP)
MOVL R11, R13 MOVL R11, R13
ROLL $0x5, R13 ROLL $0x05, R13
MOVL R9, R14 MOVL R9, R14
XORL R10, R14 XORL R10, R14
XORL R8, R14 XORL R8, R14

View File

@@ -24,7 +24,7 @@ const (
func imul(k uint64, r Register) { func imul(k uint64, r Register) {
t := GP64v() t := GP64v()
MOVQ(Imm(k), t) MOVQ(U64(k), t)
IMULQ(t, r) IMULQ(t, r)
} }
@@ -51,27 +51,27 @@ func main() {
t := GP64v() // t = GeneralPurposeRegister64() t := GP64v() // t = GeneralPurposeRegister64()
MOVQ(n, t) // MOV(t, reg_ptr_len) MOVQ(n, t) // MOV(t, reg_ptr_len)
ADDQ(Imm(1), t) // ADD(t, 1) ADDQ(U32(1), t) // ADD(t, 1)
imul(k0U64, t) // imul(t, k0U64) imul(k0U64, t) // imul(t, k0U64)
XORQ(t, v0) // XOR(reg_v0, t) XORQ(t, v0) // XOR(reg_v0, t)
MOVQ(n, t) // MOV(t, reg_ptr_len) MOVQ(n, t) // MOV(t, reg_ptr_len)
ADDQ(Imm(2), t) // ADD(t, 2) ADDQ(U32(2), t) // ADD(t, 2)
imul(k1U64, t) // imul(t, k1U64) imul(k1U64, t) // imul(t, k1U64)
XORQ(t, v1) // XOR(reg_v1, t) XORQ(t, v1) // XOR(reg_v1, t)
long := "coreLong" // coreLong = Label("coreLong") long := "coreLong" // coreLong = Label("coreLong")
CMPQ(n, Imm(32)) // CMP(reg_ptr_len, 32) CMPQ(n, U32(32)) // CMP(reg_ptr_len, 32)
JGE(LabelRef(long)) // JGE(coreLong) JGE(LabelRef(long)) // JGE(coreLong)
// //
u64s := GP64v() // reg_u64s = GeneralPurposeRegister64() u64s := GP64v() // reg_u64s = GeneralPurposeRegister64()
MOVQ(n, u64s) // MOV(reg_u64s, reg_ptr_len) MOVQ(n, u64s) // MOV(reg_u64s, reg_ptr_len)
SHRQ(Imm(3), u64s) // SHR(reg_u64s, 3) SHRQ(U8(3), u64s) // SHR(reg_u64s, 3)
// //
labels := makelabels("shortCore", 4) // labels = [Label("shortCore%d" % i) for i in range(4)] labels := makelabels("shortCore", 4) // labels = [Label("shortCore%d" % i) for i in range(4)]
// //
for i := 0; i < 4; i++ { // for i in range(4): for i := 0; i < 4; i++ { // for i in range(4):
CMPQ(u64s, Imm(i)) // CMP(reg_u64s, i) CMPQ(u64s, U32(i)) // CMP(reg_u64s, i)
JE(LabelRef(labels[i])) // JE(labels[i]) JE(LabelRef(labels[i])) // JE(labels[i])
} // } //
for i := 3; i > 0; i-- { // for i in range(3, 0, -1): for i := 3; i > 0; i-- { // for i in range(3, 0, -1):
@@ -80,12 +80,12 @@ func main() {
MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr]) MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr])
imul(k3U64, r) // imul(r, k3U64) imul(k3U64, r) // imul(r, k3U64)
ADDQ(r, v0) // ADD(reg_v0, r) ADDQ(r, v0) // ADD(reg_v0, r)
RORQ(Imm(17), v0) // ROR(reg_v0, 17) RORQ(U8(17), v0) // ROR(reg_v0, 17)
XORQ(v1, v0) // XOR(reg_v0, reg_v1) XORQ(v1, v0) // XOR(reg_v0, reg_v1)
RORQ(Imm(53), v1) // ROR(reg_v1, 53) RORQ(U8(53), v1) // ROR(reg_v1, 53)
ADDQ(v0, v1) // ADD(reg_v1, reg_v0) ADDQ(v0, v1) // ADD(reg_v1, reg_v0)
ADDQ(Imm(8), ptr) // ADD(reg_ptr,8) ADDQ(U32(8), ptr) // ADD(reg_ptr,8)
SUBQ(Imm(8), n) // SUB(reg_ptr_len,8) SUBQ(U32(8), n) // SUB(reg_ptr_len,8)
} // } //
LABEL(labels[0]) // LABEL(labels[0]) LABEL(labels[0]) // LABEL(labels[0])
// //
@@ -93,7 +93,7 @@ func main() {
// //
// split(labels, reg_ptr_len,0,7) // split(labels, reg_ptr_len,0,7)
for i := 0; i < 8; i++ { for i := 0; i < 8; i++ {
CMPQ(n, Imm(i)) CMPQ(n, U32(i))
JE(LabelRef(labels[i])) JE(LabelRef(labels[i]))
} }
// //
@@ -103,17 +103,17 @@ func main() {
// //
LABEL(labels[7]) // LABEL(labels[7]) LABEL(labels[7]) // LABEL(labels[7])
MOVBQZX(Mem{Base: ptr, Disp: 6}, ch) // MOVZX(reg_ch, byte[reg_ptr+6]) MOVBQZX(Mem{Base: ptr, Disp: 6}, ch) // MOVZX(reg_ch, byte[reg_ptr+6])
SHLQ(Imm(32), ch) // SHL(reg_ch, 32) SHLQ(U8(32), ch) // SHL(reg_ch, 32)
ADDQ(ch, v0) // ADD(reg_v0, reg_ch) ADDQ(ch, v0) // ADD(reg_v0, reg_ch)
// //
LABEL(labels[6]) // LABEL(labels[6]) LABEL(labels[6]) // LABEL(labels[6])
MOVBQZX(Mem{Base: ptr, Disp: 5}, ch) // MOVZX(reg_ch, byte[reg_ptr+5]) MOVBQZX(Mem{Base: ptr, Disp: 5}, ch) // MOVZX(reg_ch, byte[reg_ptr+5])
SHLQ(Imm(48), ch) // SHL(reg_ch, 48) SHLQ(U8(48), ch) // SHL(reg_ch, 48)
ADDQ(ch, v1) // ADD(reg_v1, reg_ch) ADDQ(ch, v1) // ADD(reg_v1, reg_ch)
// //
LABEL(labels[5]) // LABEL(labels[5]) LABEL(labels[5]) // LABEL(labels[5])
MOVBQZX(Mem{Base: ptr, Disp: 4}, ch) // MOVZX(reg_ch, byte[reg_ptr+4]) MOVBQZX(Mem{Base: ptr, Disp: 4}, ch) // MOVZX(reg_ch, byte[reg_ptr+4])
SHLQ(Imm(16), ch) // SHL(reg_ch, 16) SHLQ(U8(16), ch) // SHL(reg_ch, 16)
ADDQ(ch, v0) // ADD(reg_v0, reg_ch) ADDQ(ch, v0) // ADD(reg_v0, reg_ch)
// //
LABEL(labels[4]) // LABEL(labels[4]) LABEL(labels[4]) // LABEL(labels[4])
@@ -125,7 +125,7 @@ func main() {
// //
LABEL(labels[3]) // LABEL(labels[3]) LABEL(labels[3]) // LABEL(labels[3])
MOVBQZX(Mem{Base: ptr, Disp: 2}, ch) // MOVZX(reg_ch, byte[reg_ptr+2]) MOVBQZX(Mem{Base: ptr, Disp: 2}, ch) // MOVZX(reg_ch, byte[reg_ptr+2])
SHLQ(Imm(48), ch) // SHL(reg_ch, 48) SHLQ(U8(48), ch) // SHL(reg_ch, 48)
ADDQ(ch, v0) // ADD(reg_v0, reg_ch) ADDQ(ch, v0) // ADD(reg_v0, reg_ch)
// //
LABEL(labels[2]) // LABEL(labels[2]) LABEL(labels[2]) // LABEL(labels[2])
@@ -140,46 +140,46 @@ func main() {
ADDQ(ch, v0) // ADD(reg_v0, reg_ch) ADDQ(ch, v0) // ADD(reg_v0, reg_ch)
// //
LABEL(labels[0]) // LABEL(labels[0]) LABEL(labels[0]) // LABEL(labels[0])
RORQ(Imm(32), v1) // ROR(reg_v1, 32) RORQ(U8(32), v1) // ROR(reg_v1, 32)
XORQ(Imm(0xff), v1) // XOR(reg_v1, 0xFF) XORQ(U32(0xff), v1) // XOR(reg_v1, 0xFF)
// //
LABEL(after) // LABEL(after) LABEL(after) // LABEL(after)
// //
XORQ(v0, v1) // XOR(reg_v1, reg_v0) XORQ(v0, v1) // XOR(reg_v1, reg_v0)
// //
RORQ(Imm(33), v0) // ROR(reg_v0, 33) RORQ(U8(33), v0) // ROR(reg_v0, 33)
ADDQ(v1, v0) // ADD(reg_v0, reg_v1) ADDQ(v1, v0) // ADD(reg_v0, reg_v1)
// //
ROLQ(Imm(17), v1) // ROL(reg_v1, 17) ROLQ(U8(17), v1) // ROL(reg_v1, 17)
XORQ(v0, v1) // XOR(reg_v1, reg_v0) XORQ(v0, v1) // XOR(reg_v1, reg_v0)
// //
ROLQ(Imm(43), v0) // ROL(reg_v0, 43) ROLQ(U8(43), v0) // ROL(reg_v0, 43)
ADDQ(v1, v0) // ADD(reg_v0, reg_v1) ADDQ(v1, v0) // ADD(reg_v0, reg_v1)
// //
ROLQ(Imm(31), v1) // ROL(reg_v1, 31) ROLQ(U8(31), v1) // ROL(reg_v1, 31)
SUBQ(v0, v1) // SUB(reg_v1, reg_v0) SUBQ(v0, v1) // SUB(reg_v1, reg_v0)
// //
ROLQ(Imm(13), v0) // ROL(reg_v0, 13) ROLQ(U8(13), v0) // ROL(reg_v0, 13)
XORQ(v1, v0) // XOR(reg_v0, reg_v1) XORQ(v1, v0) // XOR(reg_v0, reg_v1)
// //
SUBQ(v0, v1) // SUB(reg_v1, reg_v0) SUBQ(v0, v1) // SUB(reg_v1, reg_v0)
// //
ROLQ(Imm(41), v0) // ROL(reg_v0, 41) ROLQ(U8(41), v0) // ROL(reg_v0, 41)
ADDQ(v1, v0) // ADD(reg_v0, reg_v1) ADDQ(v1, v0) // ADD(reg_v0, reg_v1)
// //
ROLQ(Imm(37), v1) // ROL(reg_v1, 37) ROLQ(U8(37), v1) // ROL(reg_v1, 37)
XORQ(v0, v1) // XOR(reg_v1, reg_v0) XORQ(v0, v1) // XOR(reg_v1, reg_v0)
// //
RORQ(Imm(39), v0) // ROR(reg_v0, 39) RORQ(U8(39), v0) // ROR(reg_v0, 39)
ADDQ(v1, v0) // ADD(reg_v0, reg_v1) ADDQ(v1, v0) // ADD(reg_v0, reg_v1)
// //
RORQ(Imm(15), v1) // ROR(reg_v1, 15) RORQ(U8(15), v1) // ROR(reg_v1, 15)
ADDQ(v0, v1) // ADD(reg_v1, reg_v0) ADDQ(v0, v1) // ADD(reg_v1, reg_v0)
// //
ROLQ(Imm(15), v0) // ROL(reg_v0, 15) ROLQ(U8(15), v0) // ROL(reg_v0, 15)
XORQ(v1, v0) // XOR(reg_v0, reg_v1) XORQ(v1, v0) // XOR(reg_v0, reg_v1)
// //
RORQ(Imm(5), v1) // ROR(reg_v1, 5) RORQ(U8(5), v1) // ROR(reg_v1, 5)
// //
XORQ(v1, v0) // XOR(reg_v0, reg_v1) XORQ(v1, v0) // XOR(reg_v0, reg_v1)
// //
@@ -196,12 +196,12 @@ func main() {
// //
// t = GeneralPurposeRegister64() // t = GeneralPurposeRegister64()
MOVQ(n, t) // MOV(t, reg_ptr_len) MOVQ(n, t) // MOV(t, reg_ptr_len)
ADDQ(Imm(3), t) // ADD(t, 3) ADDQ(U32(3), t) // ADD(t, 3)
imul(k2U64, t) // imul(t, k2U64) imul(k2U64, t) // imul(t, k2U64)
XORQ(t, v2) // XOR(reg_v2, t) XORQ(t, v2) // XOR(reg_v2, t)
// //
MOVQ(n, t) // MOV(t, reg_ptr_len) MOVQ(n, t) // MOV(t, reg_ptr_len)
ADDQ(Imm(4), t) // ADD(t, 4) ADDQ(U32(4), t) // ADD(t, 4)
imul(k3U64, t) // imul(t, k3U64) imul(k3U64, t) // imul(t, k3U64)
XORQ(t, v3) // XOR(reg_v3, t) XORQ(t, v3) // XOR(reg_v3, t)
// //
@@ -211,31 +211,31 @@ func main() {
MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr]) MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr])
imul(k2U32, r) // imul(r, k2U32) imul(k2U32, r) // imul(r, k2U32)
ADDQ(r, v0) // ADD(reg_v0, r) ADDQ(r, v0) // ADD(reg_v0, r)
ROLQ(Imm(57), v0) // ROL(reg_v0, 57) ROLQ(U8(57), v0) // ROL(reg_v0, 57)
XORQ(v3, v0) // XOR(reg_v0, reg_v3) XORQ(v3, v0) // XOR(reg_v0, reg_v3)
// //
MOVQ(Mem{Base: ptr, Disp: 8}, r) // MOV(r, [reg_ptr + 8]) MOVQ(Mem{Base: ptr, Disp: 8}, r) // MOV(r, [reg_ptr + 8])
imul(k3U32, r) // imul(r, k3U32) imul(k3U32, r) // imul(r, k3U32)
ADDQ(r, v1) // ADD(reg_v1, r) ADDQ(r, v1) // ADD(reg_v1, r)
ROLQ(Imm(63), v1) // ROL(reg_v1, 63) ROLQ(U8(63), v1) // ROL(reg_v1, 63)
XORQ(v2, v1) // XOR(reg_v1, reg_v2) XORQ(v2, v1) // XOR(reg_v1, reg_v2)
// //
MOVQ(Mem{Base: ptr, Disp: 16}, r) // MOV(r, [reg_ptr + 16]) MOVQ(Mem{Base: ptr, Disp: 16}, r) // MOV(r, [reg_ptr + 16])
imul(k4U32, r) // imul(r, k4U32) imul(k4U32, r) // imul(r, k4U32)
ADDQ(r, v2) // ADD(reg_v2, r) ADDQ(r, v2) // ADD(reg_v2, r)
RORQ(Imm(47), v2) // ROR(reg_v2, 47) RORQ(U8(47), v2) // ROR(reg_v2, 47)
ADDQ(v0, v2) // ADD(reg_v2, reg_v0) ADDQ(v0, v2) // ADD(reg_v2, reg_v0)
// //
MOVQ(Mem{Base: ptr, Disp: 24}, r) // MOV(r, [reg_ptr + 24]) MOVQ(Mem{Base: ptr, Disp: 24}, r) // MOV(r, [reg_ptr + 24])
imul(k5U32, r) // imul(r, k5U32) imul(k5U32, r) // imul(r, k5U32)
ADDQ(r, v3) // ADD(reg_v3, r) ADDQ(r, v3) // ADD(reg_v3, r)
RORQ(Imm(11), v3) // ROR(reg_v3, 11) RORQ(U8(11), v3) // ROR(reg_v3, 11)
SUBQ(v1, v3) // SUB(reg_v3, reg_v1) SUBQ(v1, v3) // SUB(reg_v3, reg_v1)
// //
ADDQ(Imm(32), ptr) // ADD(reg_ptr, 32) ADDQ(U32(32), ptr) // ADD(reg_ptr, 32)
SUBQ(Imm(32), n) // SUB(reg_ptr_len, 32) SUBQ(U32(32), n) // SUB(reg_ptr_len, 32)
// //
CMPQ(n, Imm(32)) // CMP(reg_ptr_len, 32) CMPQ(n, U32(32)) // CMP(reg_ptr_len, 32)
JGE(LabelRef(loop)) // JGE(loop.begin) JGE(LabelRef(loop)) // JGE(loop.begin)
// //
// //
@@ -244,12 +244,12 @@ func main() {
// //
// reg_u64s = GeneralPurposeRegister64() // reg_u64s = GeneralPurposeRegister64()
MOVQ(n, u64s) // MOV(reg_u64s, reg_ptr_len) MOVQ(n, u64s) // MOV(reg_u64s, reg_ptr_len)
SHRQ(Imm(3), u64s) // SHR(reg_u64s, 3) SHRQ(U8(3), u64s) // SHR(reg_u64s, 3)
// //
labels = makelabels("longCore", 4) // labels = [Label("longCore%d" % i) for i in range(4)] labels = makelabels("longCore", 4) // labels = [Label("longCore%d" % i) for i in range(4)]
// //
for i := 0; i < 4; i++ { // for i in range(4): for i := 0; i < 4; i++ { // for i in range(4):
CMPQ(u64s, Imm(i)) // CMP(reg_u64s, i) CMPQ(u64s, U32(i)) // CMP(reg_u64s, i)
JE(LabelRef(labels[i])) // JE(labels[i]) JE(LabelRef(labels[i])) // JE(labels[i])
} // } //
LABEL(labels[3]) // LABEL(labels[3]) LABEL(labels[3]) // LABEL(labels[3])
@@ -257,37 +257,37 @@ func main() {
MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr]) MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr])
imul(k2U32, r) // imul(r, k2U32) imul(k2U32, r) // imul(r, k2U32)
ADDQ(r, v0) // ADD(reg_v0, r) ADDQ(r, v0) // ADD(reg_v0, r)
ROLQ(Imm(57), v0) // ROL(reg_v0, 57) ROLQ(U8(57), v0) // ROL(reg_v0, 57)
XORQ(v3, v0) // XOR(reg_v0, reg_v3) XORQ(v3, v0) // XOR(reg_v0, reg_v3)
ADDQ(Imm(8), ptr) // ADD(reg_ptr, 8) ADDQ(U32(8), ptr) // ADD(reg_ptr, 8)
SUBQ(Imm(8), n) // SUB(reg_ptr_len, 8) SUBQ(U32(8), n) // SUB(reg_ptr_len, 8)
// //
LABEL(labels[2]) // LABEL(labels[2]) LABEL(labels[2]) // LABEL(labels[2])
// //
MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr]) MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr])
imul(k3U32, r) // imul(r, k3U32) imul(k3U32, r) // imul(r, k3U32)
ADDQ(r, v1) // ADD(reg_v1, r) ADDQ(r, v1) // ADD(reg_v1, r)
ROLQ(Imm(63), v1) // ROL(reg_v1, 63) ROLQ(U8(63), v1) // ROL(reg_v1, 63)
XORQ(v2, v1) // XOR(reg_v1, reg_v2) XORQ(v2, v1) // XOR(reg_v1, reg_v2)
ADDQ(Imm(8), ptr) // ADD(reg_ptr, 8) ADDQ(U32(8), ptr) // ADD(reg_ptr, 8)
SUBQ(Imm(8), n) // SUB(reg_ptr_len, 8) SUBQ(U32(8), n) // SUB(reg_ptr_len, 8)
// //
LABEL(labels[1]) // LABEL(labels[1]) LABEL(labels[1]) // LABEL(labels[1])
// //
MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr]) MOVQ(Mem{Base: ptr}, r) // MOV(r, [reg_ptr])
imul(k4U32, r) // imul(r, k4U32) imul(k4U32, r) // imul(r, k4U32)
ADDQ(r, v2) // ADD(reg_v2, r) ADDQ(r, v2) // ADD(reg_v2, r)
RORQ(Imm(47), v2) // ROR(reg_v2, 47) RORQ(U8(47), v2) // ROR(reg_v2, 47)
ADDQ(v0, v2) // ADD(reg_v2, reg_v0) ADDQ(v0, v2) // ADD(reg_v2, reg_v0)
ADDQ(Imm(8), ptr) // ADD(reg_ptr, 8) ADDQ(U32(8), ptr) // ADD(reg_ptr, 8)
SUBQ(Imm(8), n) // SUB(reg_ptr_len, 8) SUBQ(U32(8), n) // SUB(reg_ptr_len, 8)
// //
LABEL(labels[0]) // LABEL(labels[0]) LABEL(labels[0]) // LABEL(labels[0])
// //
RORQ(Imm(11), v3) // ROR(reg_v3, 11) RORQ(U8(11), v3) // ROR(reg_v3, 11)
SUBQ(v1, v3) // SUB(reg_v3, reg_v1) SUBQ(v1, v3) // SUB(reg_v3, reg_v1)
// //
ADDQ(Imm(1), nsave) // ADD(reg_ptr_len_saved, 1) ADDQ(U32(1), nsave) // ADD(reg_ptr_len_saved, 1)
imul(k3U64, nsave) // imul(reg_ptr_len_saved, k3U64) imul(k3U64, nsave) // imul(reg_ptr_len_saved, k3U64)
XORQ(nsave, v0) // XOR(reg_v0, reg_ptr_len_saved) XORQ(nsave, v0) // XOR(reg_v0, reg_ptr_len_saved)
// //
@@ -295,7 +295,7 @@ func main() {
// //
// split(labels, reg_ptr_len, 0, 7) // split(labels, reg_ptr_len, 0, 7)
for i := 0; i < 8; i++ { for i := 0; i < 8; i++ {
CMPQ(n, Imm(i)) CMPQ(n, U32(i))
JE(LabelRef(labels[i])) JE(LabelRef(labels[i]))
} }
// //
@@ -342,44 +342,44 @@ func main() {
ADDQ(ch, v2) // ADD(reg_v2, reg_ch) ADDQ(ch, v2) // ADD(reg_v2, reg_ch)
// //
LABEL(labels[0]) // LABEL(labels[0]) LABEL(labels[0]) // LABEL(labels[0])
ROLQ(Imm(32), v3) // ROL(reg_v3, 32) ROLQ(U8(32), v3) // ROL(reg_v3, 32)
XORQ(Imm(0xff), v3) // XOR(reg_v3, 0xFF) XORQ(U32(0xff), v3) // XOR(reg_v3, 0xFF)
// //
LABEL(after) // LABEL(after) LABEL(after) // LABEL(after)
// //
// ## finalize // ## finalize
// //
SUBQ(v2, v1) // SUB(reg_v1, reg_v2) SUBQ(v2, v1) // SUB(reg_v1, reg_v2)
RORQ(Imm(19), v0) // ROR(reg_v0, 19) RORQ(U8(19), v0) // ROR(reg_v0, 19)
SUBQ(v0, v1) // SUB(reg_v1, reg_v0) SUBQ(v0, v1) // SUB(reg_v1, reg_v0)
RORQ(Imm(53), v1) // ROR(reg_v1, 53) RORQ(U8(53), v1) // ROR(reg_v1, 53)
XORQ(v1, v3) // XOR(reg_v3, reg_v1) XORQ(v1, v3) // XOR(reg_v3, reg_v1)
SUBQ(v3, v0) // SUB(reg_v0, reg_v3) SUBQ(v3, v0) // SUB(reg_v0, reg_v3)
ROLQ(Imm(43), v3) // ROL(reg_v3, 43) ROLQ(U8(43), v3) // ROL(reg_v3, 43)
ADDQ(v3, v0) // ADD(reg_v0, reg_v3) ADDQ(v3, v0) // ADD(reg_v0, reg_v3)
RORQ(Imm(3), v0) // ROR(reg_v0, 3) RORQ(U8(3), v0) // ROR(reg_v0, 3)
SUBQ(v0, v3) // SUB(reg_v3, reg_v0) SUBQ(v0, v3) // SUB(reg_v3, reg_v0)
RORQ(Imm(43), v2) // ROR(reg_v2, 43) RORQ(U8(43), v2) // ROR(reg_v2, 43)
SUBQ(v3, v2) // SUB(reg_v2, reg_v3) SUBQ(v3, v2) // SUB(reg_v2, reg_v3)
ROLQ(Imm(55), v2) // ROL(reg_v2, 55) ROLQ(U8(55), v2) // ROL(reg_v2, 55)
XORQ(v0, v2) // XOR(reg_v2, reg_v0) XORQ(v0, v2) // XOR(reg_v2, reg_v0)
SUBQ(v2, v1) // SUB(reg_v1, reg_v2) SUBQ(v2, v1) // SUB(reg_v1, reg_v2)
RORQ(Imm(7), v3) // ROR(reg_v3, 7) RORQ(U8(7), v3) // ROR(reg_v3, 7)
SUBQ(v2, v3) // SUB(reg_v3, reg_v2) SUBQ(v2, v3) // SUB(reg_v3, reg_v2)
RORQ(Imm(31), v2) // ROR(reg_v2, 31) RORQ(U8(31), v2) // ROR(reg_v2, 31)
ADDQ(v2, v3) // ADD(reg_v3, reg_v2) ADDQ(v2, v3) // ADD(reg_v3, reg_v2)
SUBQ(v1, v2) // SUB(reg_v2, reg_v1) SUBQ(v1, v2) // SUB(reg_v2, reg_v1)
RORQ(Imm(39), v3) // ROR(reg_v3, 39) RORQ(U8(39), v3) // ROR(reg_v3, 39)
XORQ(v3, v2) // XOR(reg_v2, reg_v3) XORQ(v3, v2) // XOR(reg_v2, reg_v3)
RORQ(Imm(17), v3) // ROR(reg_v3, 17) RORQ(U8(17), v3) // ROR(reg_v3, 17)
XORQ(v2, v3) // XOR(reg_v3, reg_v2) XORQ(v2, v3) // XOR(reg_v3, reg_v2)
ADDQ(v3, v1) // ADD(reg_v1, reg_v3) ADDQ(v3, v1) // ADD(reg_v1, reg_v3)
RORQ(Imm(9), v1) // ROR(reg_v1, 9) RORQ(U8(9), v1) // ROR(reg_v1, 9)
XORQ(v1, v2) // XOR(reg_v2, reg_v1) XORQ(v1, v2) // XOR(reg_v2, reg_v1)
ROLQ(Imm(24), v2) // ROL(reg_v2, 24) ROLQ(U8(24), v2) // ROL(reg_v2, 24)
XORQ(v2, v3) // XOR(reg_v3, reg_v2) XORQ(v2, v3) // XOR(reg_v3, reg_v2)
RORQ(Imm(59), v3) // ROR(reg_v3, 59) RORQ(U8(59), v3) // ROR(reg_v3, 59)
RORQ(Imm(1), v0) // ROR(reg_v0, 1) RORQ(U8(1), v0) // ROR(reg_v0, 1)
SUBQ(v1, v0) // SUB(reg_v0, reg_v1) SUBQ(v1, v0) // SUB(reg_v0, reg_v1)
// //
XORQ(v1, v0) // XOR(reg_v0, reg_v1) XORQ(v1, v0) // XOR(reg_v0, reg_v1)

View File

@@ -10,26 +10,26 @@ TEXT ·Hash(SB),0,$0-40
MOVQ (AX), BX MOVQ (AX), BX
MOVQ 8(AX), BP MOVQ 8(AX), BP
MOVQ DX, SI MOVQ DX, SI
ADDQ $0x1, SI ADDQ $0x00000001, SI
MOVQ $0xb89b0f8e1655514f, DI MOVQ $0xb89b0f8e1655514f, DI
IMULQ DI, SI IMULQ DI, SI
XORQ SI, BX XORQ SI, BX
MOVQ DX, SI MOVQ DX, SI
ADDQ $0x2, SI ADDQ $0x00000002, SI
MOVQ $0x8c6f736011bd5127, DI MOVQ $0x8c6f736011bd5127, DI
IMULQ DI, SI IMULQ DI, SI
XORQ SI, BP XORQ SI, BP
CMPQ DX, $0x20 CMPQ DX, $0x00000020
JGE coreLong JGE coreLong
MOVQ DX, SI MOVQ DX, SI
SHRQ $0x3, SI SHRQ $0x03, SI
CMPQ SI, $0x0 CMPQ SI, $0x00000000
JE shortCore0 JE shortCore0
CMPQ SI, $0x1 CMPQ SI, $0x00000001
JE shortCore1 JE shortCore1
CMPQ SI, $0x2 CMPQ SI, $0x00000002
JE shortCore2 JE shortCore2
CMPQ SI, $0x3 CMPQ SI, $0x00000003
JE shortCore3 JE shortCore3
shortCore3: shortCore3:
MOVQ (CX), SI MOVQ (CX), SI
@@ -40,8 +40,8 @@ shortCore3:
XORQ BP, BX XORQ BP, BX
RORQ $0x35, BP RORQ $0x35, BP
ADDQ BX, BP ADDQ BX, BP
ADDQ $0x8, CX ADDQ $0x00000008, CX
SUBQ $0x8, DX SUBQ $0x00000008, DX
shortCore2: shortCore2:
MOVQ (CX), SI MOVQ (CX), SI
MOVQ $0x9c1b8e1e9628323f, DI MOVQ $0x9c1b8e1e9628323f, DI
@@ -51,8 +51,8 @@ shortCore2:
XORQ BP, BX XORQ BP, BX
RORQ $0x35, BP RORQ $0x35, BP
ADDQ BX, BP ADDQ BX, BP
ADDQ $0x8, CX ADDQ $0x00000008, CX
SUBQ $0x8, DX SUBQ $0x00000008, DX
shortCore1: shortCore1:
MOVQ (CX), SI MOVQ (CX), SI
MOVQ $0x9c1b8e1e9628323f, DI MOVQ $0x9c1b8e1e9628323f, DI
@@ -62,24 +62,24 @@ shortCore1:
XORQ BP, BX XORQ BP, BX
RORQ $0x35, BP RORQ $0x35, BP
ADDQ BX, BP ADDQ BX, BP
ADDQ $0x8, CX ADDQ $0x00000008, CX
SUBQ $0x8, DX SUBQ $0x00000008, DX
shortCore0: shortCore0:
CMPQ DX, $0x0 CMPQ DX, $0x00000000
JE shortTail0 JE shortTail0
CMPQ DX, $0x1 CMPQ DX, $0x00000001
JE shortTail1 JE shortTail1
CMPQ DX, $0x2 CMPQ DX, $0x00000002
JE shortTail2 JE shortTail2
CMPQ DX, $0x3 CMPQ DX, $0x00000003
JE shortTail3 JE shortTail3
CMPQ DX, $0x4 CMPQ DX, $0x00000004
JE shortTail4 JE shortTail4
CMPQ DX, $0x5 CMPQ DX, $0x00000005
JE shortTail5 JE shortTail5
CMPQ DX, $0x6 CMPQ DX, $0x00000006
JE shortTail6 JE shortTail6
CMPQ DX, $0x7 CMPQ DX, $0x00000007
JE shortTail7 JE shortTail7
shortTail7: shortTail7:
MOVBQZX 6(CX), SI MOVBQZX 6(CX), SI
@@ -110,7 +110,7 @@ shortTail1:
ADDQ SI, BX ADDQ SI, BX
shortTail0: shortTail0:
RORQ $0x20, BP RORQ $0x20, BP
XORQ $0xff, BP XORQ $0x000000ff, BP
shortAfter: shortAfter:
XORQ BX, BP XORQ BX, BP
RORQ $0x21, BX RORQ $0x21, BX
@@ -121,7 +121,7 @@ shortAfter:
ADDQ BP, BX ADDQ BP, BX
ROLQ $0x1f, BP ROLQ $0x1f, BP
SUBQ BX, BP SUBQ BX, BP
ROLQ $0xd, BX ROLQ $0x0d, BX
XORQ BP, BX XORQ BP, BX
SUBQ BX, BP SUBQ BX, BP
ROLQ $0x29, BX ROLQ $0x29, BX
@@ -130,11 +130,11 @@ shortAfter:
XORQ BX, BP XORQ BX, BP
RORQ $0x27, BX RORQ $0x27, BX
ADDQ BP, BX ADDQ BP, BX
RORQ $0xf, BP RORQ $0x0f, BP
ADDQ BX, BP ADDQ BX, BP
ROLQ $0xf, BX ROLQ $0x0f, BX
XORQ BP, BX XORQ BP, BX
RORQ $0x5, BP RORQ $0x05, BP
XORQ BP, BX XORQ BP, BX
MOVQ BX, ret+32(FP) MOVQ BX, ret+32(FP)
RET RET
@@ -142,104 +142,104 @@ coreLong:
MOVQ 16(AX), DI MOVQ 16(AX), DI
MOVQ 24(AX), AX MOVQ 24(AX), AX
MOVQ DX, SI MOVQ DX, SI
ADDQ $0x3, SI ADDQ $0x00000003, SI
MOVQ $0x8f29bd94edce7b39, R8 MOVQ $0x8f29bd94edce7b39, R8
IMULQ R8, SI IMULQ R8, SI
XORQ SI, DI XORQ SI, DI
MOVQ DX, SI MOVQ DX, SI
ADDQ $0x4, SI ADDQ $0x00000004, SI
MOVQ $0x9c1b8e1e9628323f, R8 MOVQ $0x9c1b8e1e9628323f, R8
IMULQ R8, SI IMULQ R8, SI
XORQ SI, AX XORQ SI, AX
block: block:
MOVQ (CX), SI MOVQ (CX), SI
MOVQ $0x802910e3, R8 MOVQ $0x00000000802910e3, R8
IMULQ R8, SI IMULQ R8, SI
ADDQ SI, BX ADDQ SI, BX
ROLQ $0x39, BX ROLQ $0x39, BX
XORQ AX, BX XORQ AX, BX
MOVQ 8(CX), SI MOVQ 8(CX), SI
MOVQ $0x819b13af, R8 MOVQ $0x00000000819b13af, R8
IMULQ R8, SI IMULQ R8, SI
ADDQ SI, BP ADDQ SI, BP
ROLQ $0x3f, BP ROLQ $0x3f, BP
XORQ DI, BP XORQ DI, BP
MOVQ 16(CX), SI MOVQ 16(CX), SI
MOVQ $0x91cb27e5, R8 MOVQ $0x0000000091cb27e5, R8
IMULQ R8, SI IMULQ R8, SI
ADDQ SI, DI ADDQ SI, DI
RORQ $0x2f, DI RORQ $0x2f, DI
ADDQ BX, DI ADDQ BX, DI
MOVQ 24(CX), SI MOVQ 24(CX), SI
MOVQ $0xc1a269c1, R8 MOVQ $0x00000000c1a269c1, R8
IMULQ R8, SI IMULQ R8, SI
ADDQ SI, AX ADDQ SI, AX
RORQ $0xb, AX RORQ $0x0b, AX
SUBQ BP, AX SUBQ BP, AX
ADDQ $0x20, CX ADDQ $0x00000020, CX
SUBQ $0x20, DX SUBQ $0x00000020, DX
CMPQ DX, $0x20 CMPQ DX, $0x00000020
JGE block JGE block
MOVQ DX, R8 MOVQ DX, R8
MOVQ DX, SI MOVQ DX, SI
SHRQ $0x3, SI SHRQ $0x03, SI
CMPQ SI, $0x0 CMPQ SI, $0x00000000
JE longCore0 JE longCore0
CMPQ SI, $0x1 CMPQ SI, $0x00000001
JE longCore1 JE longCore1
CMPQ SI, $0x2 CMPQ SI, $0x00000002
JE longCore2 JE longCore2
CMPQ SI, $0x3 CMPQ SI, $0x00000003
JE longCore3 JE longCore3
longCore3: longCore3:
MOVQ (CX), SI MOVQ (CX), SI
MOVQ $0x802910e3, R9 MOVQ $0x00000000802910e3, R9
IMULQ R9, SI IMULQ R9, SI
ADDQ SI, BX ADDQ SI, BX
ROLQ $0x39, BX ROLQ $0x39, BX
XORQ AX, BX XORQ AX, BX
ADDQ $0x8, CX ADDQ $0x00000008, CX
SUBQ $0x8, DX SUBQ $0x00000008, DX
longCore2: longCore2:
MOVQ (CX), SI MOVQ (CX), SI
MOVQ $0x819b13af, R9 MOVQ $0x00000000819b13af, R9
IMULQ R9, SI IMULQ R9, SI
ADDQ SI, BP ADDQ SI, BP
ROLQ $0x3f, BP ROLQ $0x3f, BP
XORQ DI, BP XORQ DI, BP
ADDQ $0x8, CX ADDQ $0x00000008, CX
SUBQ $0x8, DX SUBQ $0x00000008, DX
longCore1: longCore1:
MOVQ (CX), SI MOVQ (CX), SI
MOVQ $0x91cb27e5, R9 MOVQ $0x0000000091cb27e5, R9
IMULQ R9, SI IMULQ R9, SI
ADDQ SI, DI ADDQ SI, DI
RORQ $0x2f, DI RORQ $0x2f, DI
ADDQ BX, DI ADDQ BX, DI
ADDQ $0x8, CX ADDQ $0x00000008, CX
SUBQ $0x8, DX SUBQ $0x00000008, DX
longCore0: longCore0:
RORQ $0xb, AX RORQ $0x0b, AX
SUBQ BP, AX SUBQ BP, AX
ADDQ $0x1, R8 ADDQ $0x00000001, R8
MOVQ $0x9c1b8e1e9628323f, SI MOVQ $0x9c1b8e1e9628323f, SI
IMULQ SI, R8 IMULQ SI, R8
XORQ R8, BX XORQ R8, BX
CMPQ DX, $0x0 CMPQ DX, $0x00000000
JE longTail0 JE longTail0
CMPQ DX, $0x1 CMPQ DX, $0x00000001
JE longTail1 JE longTail1
CMPQ DX, $0x2 CMPQ DX, $0x00000002
JE longTail2 JE longTail2
CMPQ DX, $0x3 CMPQ DX, $0x00000003
JE longTail3 JE longTail3
CMPQ DX, $0x4 CMPQ DX, $0x00000004
JE longTail4 JE longTail4
CMPQ DX, $0x5 CMPQ DX, $0x00000005
JE longTail5 JE longTail5
CMPQ DX, $0x6 CMPQ DX, $0x00000006
JE longTail6 JE longTail6
CMPQ DX, $0x7 CMPQ DX, $0x00000007
JE longTail7 JE longTail7
longTail7: longTail7:
MOVBQZX 6(CX), SI MOVBQZX 6(CX), SI
@@ -269,7 +269,7 @@ longTail1:
ADDQ SI, DI ADDQ SI, DI
longTail0: longTail0:
ROLQ $0x20, AX ROLQ $0x20, AX
XORQ $0xff, AX XORQ $0x000000ff, AX
longAfter: longAfter:
SUBQ DI, BP SUBQ DI, BP
RORQ $0x13, BX RORQ $0x13, BX
@@ -279,14 +279,14 @@ longAfter:
SUBQ AX, BX SUBQ AX, BX
ROLQ $0x2b, AX ROLQ $0x2b, AX
ADDQ AX, BX ADDQ AX, BX
RORQ $0x3, BX RORQ $0x03, BX
SUBQ BX, AX SUBQ BX, AX
RORQ $0x2b, DI RORQ $0x2b, DI
SUBQ AX, DI SUBQ AX, DI
ROLQ $0x37, DI ROLQ $0x37, DI
XORQ BX, DI XORQ BX, DI
SUBQ DI, BP SUBQ DI, BP
RORQ $0x7, AX RORQ $0x07, AX
SUBQ DI, AX SUBQ DI, AX
RORQ $0x1f, DI RORQ $0x1f, DI
ADDQ DI, AX ADDQ DI, AX
@@ -296,12 +296,12 @@ longAfter:
RORQ $0x11, AX RORQ $0x11, AX
XORQ DI, AX XORQ DI, AX
ADDQ AX, BP ADDQ AX, BP
RORQ $0x9, BP RORQ $0x09, BP
XORQ BP, DI XORQ BP, DI
ROLQ $0x18, DI ROLQ $0x18, DI
XORQ DI, AX XORQ DI, AX
RORQ $0x3b, AX RORQ $0x3b, AX
RORQ $0x1, BX RORQ $0x01, BX
SUBQ BP, BX SUBQ BP, BX
XORQ BP, BX XORQ BP, BX
XORQ AX, DI XORQ AX, DI

View File

@@ -8,10 +8,10 @@ TEXT ·Sum(SB),0,$0-32
MOVQ xs_len+8(FP), CX MOVQ xs_len+8(FP), CX
XORQ DX, DX XORQ DX, DX
loop: loop:
CMPQ CX, $0x0 CMPQ CX, $0x00
JE done JE done
ADDQ (AX), DX ADDQ (AX), DX
ADDQ $0x8, AX ADDQ $0x08, AX
DECQ CX DECQ CX
JMP loop JMP loop
done: done:

View File

@@ -23,6 +23,7 @@ func (c *ctors) Generate(is []inst.Instruction) ([]byte, error) {
c.Printf("// %s\n\n", c.cfg.GeneratedWarning()) c.Printf("// %s\n\n", c.cfg.GeneratedWarning())
c.Printf("package x86\n\n") c.Printf("package x86\n\n")
c.Printf("import (\n") c.Printf("import (\n")
c.Printf("\t\"errors\"\n")
c.Printf("\t\"%s\"\n", pkg) c.Printf("\t\"%s\"\n", pkg)
c.Printf("\t\"%s/reg\"\n", pkg) c.Printf("\t\"%s/reg\"\n", pkg)
c.Printf("\t\"%s/operand\"\n", pkg) c.Printf("\t\"%s/operand\"\n", pkg)
@@ -76,7 +77,7 @@ func (c *ctors) forms(i inst.Instruction, s signature) {
} }
c.Printf("}\n") c.Printf("}\n")
c.Printf("return nil, ErrBadOperandTypes\n") c.Printf("return nil, errors.New(\"%s: bad operands\")\n", i.Opcode)
} }
func construct(i inst.Instruction, f inst.Form, s signature) string { func construct(i inst.Instruction, f inst.Form, s signature) string {

File diff suppressed because it is too large Load Diff