Commit db53d97a authored by Keith Randall's avatar Keith Randall

runtime: Use aligned loads for AES key schedule.

R=rsc, minux.ma, khr
CC=golang-dev
https://golang.org/cl/7763050
parent a63d5dd1
...@@ -742,8 +742,8 @@ TEXT runtime·aeshashstr(SB),7,$0 ...@@ -742,8 +742,8 @@ TEXT runtime·aeshashstr(SB),7,$0
TEXT runtime·aeshashbody(SB),7,$0 TEXT runtime·aeshashbody(SB),7,$0
MOVL (DX), X0 // seed to low 32 bits of xmm0 MOVL (DX), X0 // seed to low 32 bits of xmm0
PINSRD $1, CX, X0 // size to next 32 bits of xmm0 PINSRD $1, CX, X0 // size to next 32 bits of xmm0
MOVOU runtime·aeskeysched+0(SB), X2 MOVO runtime·aeskeysched+0(SB), X2
MOVOU runtime·aeskeysched+16(SB), X3 MOVO runtime·aeskeysched+16(SB), X3
aesloop: aesloop:
CMPL CX, $16 CMPL CX, $16
JB aesloopend JB aesloopend
...@@ -791,11 +791,9 @@ TEXT runtime·aeshash32(SB),7,$0 ...@@ -791,11 +791,9 @@ TEXT runtime·aeshash32(SB),7,$0
MOVL 12(SP), AX // ptr to data MOVL 12(SP), AX // ptr to data
MOVL (DX), X0 // seed MOVL (DX), X0 // seed
PINSRD $1, (AX), X0 // data PINSRD $1, (AX), X0 // data
MOVOU runtime·aeskeysched+0(SB), X2 AESENC runtime·aeskeysched+0(SB), X0
MOVOU runtime·aeskeysched+16(SB), X3 AESENC runtime·aeskeysched+16(SB), X0
AESENC X2, X0 AESENC runtime·aeskeysched+0(SB), X0
AESENC X3, X0
AESENC X2, X0
MOVL X0, (DX) MOVL X0, (DX)
RET RET
...@@ -804,11 +802,9 @@ TEXT runtime·aeshash64(SB),7,$0 ...@@ -804,11 +802,9 @@ TEXT runtime·aeshash64(SB),7,$0
MOVL 12(SP), AX // ptr to data MOVL 12(SP), AX // ptr to data
MOVQ (AX), X0 // data MOVQ (AX), X0 // data
PINSRD $2, (DX), X0 // seed PINSRD $2, (DX), X0 // seed
MOVOU runtime·aeskeysched+0(SB), X2 AESENC runtime·aeskeysched+0(SB), X0
MOVOU runtime·aeskeysched+16(SB), X3 AESENC runtime·aeskeysched+16(SB), X0
AESENC X2, X0 AESENC runtime·aeskeysched+0(SB), X0
AESENC X3, X0
AESENC X2, X0
MOVL X0, (DX) MOVL X0, (DX)
RET RET
......
...@@ -762,8 +762,8 @@ TEXT runtime·aeshashstr(SB),7,$0 ...@@ -762,8 +762,8 @@ TEXT runtime·aeshashstr(SB),7,$0
TEXT runtime·aeshashbody(SB),7,$0 TEXT runtime·aeshashbody(SB),7,$0
MOVQ (DX), X0 // seed to low 64 bits of xmm0 MOVQ (DX), X0 // seed to low 64 bits of xmm0
PINSRQ $1, CX, X0 // size to high 64 bits of xmm0 PINSRQ $1, CX, X0 // size to high 64 bits of xmm0
MOVOU runtime·aeskeysched+0(SB), X2 MOVO runtime·aeskeysched+0(SB), X2
MOVOU runtime·aeskeysched+16(SB), X3 MOVO runtime·aeskeysched+16(SB), X3
aesloop: aesloop:
CMPQ CX, $16 CMPQ CX, $16
JB aesloopend JB aesloopend
...@@ -811,11 +811,9 @@ TEXT runtime·aeshash32(SB),7,$0 ...@@ -811,11 +811,9 @@ TEXT runtime·aeshash32(SB),7,$0
MOVQ 24(SP), AX // ptr to data MOVQ 24(SP), AX // ptr to data
MOVQ (DX), X0 // seed MOVQ (DX), X0 // seed
PINSRD $2, (AX), X0 // data PINSRD $2, (AX), X0 // data
MOVOU runtime·aeskeysched+0(SB), X2 AESENC runtime·aeskeysched+0(SB), X0
MOVOU runtime·aeskeysched+16(SB), X3 AESENC runtime·aeskeysched+16(SB), X0
AESENC X2, X0 AESENC runtime·aeskeysched+0(SB), X0
AESENC X3, X0
AESENC X2, X0
MOVQ X0, (DX) MOVQ X0, (DX)
RET RET
...@@ -824,11 +822,9 @@ TEXT runtime·aeshash64(SB),7,$0 ...@@ -824,11 +822,9 @@ TEXT runtime·aeshash64(SB),7,$0
MOVQ 24(SP), AX // ptr to data MOVQ 24(SP), AX // ptr to data
MOVQ (DX), X0 // seed MOVQ (DX), X0 // seed
PINSRQ $1, (AX), X0 // data PINSRQ $1, (AX), X0 // data
MOVOU runtime·aeskeysched+0(SB), X2 AESENC runtime·aeskeysched+0(SB), X0
MOVOU runtime·aeskeysched+16(SB), X3 AESENC runtime·aeskeysched+16(SB), X0
AESENC X2, X0 AESENC runtime·aeskeysched+0(SB), X0
AESENC X3, X0
AESENC X2, X0
MOVQ X0, (DX) MOVQ X0, (DX)
RET RET
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment