From: Keith Randall Date: Wed, 20 Mar 2013 21:34:26 +0000 (-0700) Subject: runtime: Use aligned loads for AES key schedule. X-Git-Tag: go1.1rc2~420 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=db53d97ac494397f8b11ad66c83b7662eb84d5d3;p=gostls13.git runtime: Use aligned loads for AES key schedule. R=rsc, minux.ma, khr CC=golang-dev https://golang.org/cl/7763050 --- diff --git a/src/pkg/runtime/asm_386.s b/src/pkg/runtime/asm_386.s index 10f655bfe2..e4b841cfa5 100644 --- a/src/pkg/runtime/asm_386.s +++ b/src/pkg/runtime/asm_386.s @@ -742,8 +742,8 @@ TEXT runtime·aeshashstr(SB),7,$0 TEXT runtime·aeshashbody(SB),7,$0 MOVL (DX), X0 // seed to low 32 bits of xmm0 PINSRD $1, CX, X0 // size to next 32 bits of xmm0 - MOVOU runtime·aeskeysched+0(SB), X2 - MOVOU runtime·aeskeysched+16(SB), X3 + MOVO runtime·aeskeysched+0(SB), X2 + MOVO runtime·aeskeysched+16(SB), X3 aesloop: CMPL CX, $16 JB aesloopend @@ -791,11 +791,9 @@ TEXT runtime·aeshash32(SB),7,$0 MOVL 12(SP), AX // ptr to data MOVL (DX), X0 // seed PINSRD $1, (AX), X0 // data - MOVOU runtime·aeskeysched+0(SB), X2 - MOVOU runtime·aeskeysched+16(SB), X3 - AESENC X2, X0 - AESENC X3, X0 - AESENC X2, X0 + AESENC runtime·aeskeysched+0(SB), X0 + AESENC runtime·aeskeysched+16(SB), X0 + AESENC runtime·aeskeysched+0(SB), X0 MOVL X0, (DX) RET @@ -804,11 +802,9 @@ TEXT runtime·aeshash64(SB),7,$0 MOVL 12(SP), AX // ptr to data MOVQ (AX), X0 // data PINSRD $2, (DX), X0 // seed - MOVOU runtime·aeskeysched+0(SB), X2 - MOVOU runtime·aeskeysched+16(SB), X3 - AESENC X2, X0 - AESENC X3, X0 - AESENC X2, X0 + AESENC runtime·aeskeysched+0(SB), X0 + AESENC runtime·aeskeysched+16(SB), X0 + AESENC runtime·aeskeysched+0(SB), X0 MOVL X0, (DX) RET diff --git a/src/pkg/runtime/asm_amd64.s b/src/pkg/runtime/asm_amd64.s index f31508de18..709bc48d8d 100644 --- a/src/pkg/runtime/asm_amd64.s +++ b/src/pkg/runtime/asm_amd64.s @@ -762,8 +762,8 @@ TEXT runtime·aeshashstr(SB),7,$0 TEXT runtime·aeshashbody(SB),7,$0 MOVQ (DX), X0 // seed to low 64 bits of xmm0 PINSRQ $1, CX, X0 // size to high 64 bits of xmm0 - MOVOU runtime·aeskeysched+0(SB), X2 - MOVOU runtime·aeskeysched+16(SB), X3 + MOVO runtime·aeskeysched+0(SB), X2 + MOVO runtime·aeskeysched+16(SB), X3 aesloop: CMPQ CX, $16 JB aesloopend @@ -811,11 +811,9 @@ TEXT runtime·aeshash32(SB),7,$0 MOVQ 24(SP), AX // ptr to data MOVQ (DX), X0 // seed PINSRD $2, (AX), X0 // data - MOVOU runtime·aeskeysched+0(SB), X2 - MOVOU runtime·aeskeysched+16(SB), X3 - AESENC X2, X0 - AESENC X3, X0 - AESENC X2, X0 + AESENC runtime·aeskeysched+0(SB), X0 + AESENC runtime·aeskeysched+16(SB), X0 + AESENC runtime·aeskeysched+0(SB), X0 MOVQ X0, (DX) RET @@ -824,11 +822,9 @@ TEXT runtime·aeshash64(SB),7,$0 MOVQ 24(SP), AX // ptr to data MOVQ (DX), X0 // seed PINSRQ $1, (AX), X0 // data - MOVOU runtime·aeskeysched+0(SB), X2 - MOVOU runtime·aeskeysched+16(SB), X3 - AESENC X2, X0 - AESENC X3, X0 - AESENC X2, X0 + AESENC runtime·aeskeysched+0(SB), X0 + AESENC runtime·aeskeysched+16(SB), X0 + AESENC runtime·aeskeysched+0(SB), X0 MOVQ X0, (DX) RET