]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.8] vendor/golang.org/x/crypto/curve25519: avoid loss of R15 in...
authorRuss Cox <rsc@golang.org>
Mon, 6 Feb 2017 19:41:12 +0000 (14:41 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 6 Feb 2017 21:57:50 +0000 (21:57 +0000)
Original code fixed in https://go-review.googlesource.com/#/c/36359/.

Fixes #18820.

Change-Id: I060e6c9d0e312b4fd5d0674aff131055bf5cf61d
Reviewed-on: https://go-review.googlesource.com/36412
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Adam Langley <agl@golang.org>
Reviewed-on: https://go-review.googlesource.com/36414
Reviewed-by: Austin Clements <austin@google.com>
src/vendor/golang_org/x/crypto/curve25519/const_amd64.h [new file with mode: 0644]
src/vendor/golang_org/x/crypto/curve25519/const_amd64.s
src/vendor/golang_org/x/crypto/curve25519/freeze_amd64.s
src/vendor/golang_org/x/crypto/curve25519/ladderstep_amd64.s
src/vendor/golang_org/x/crypto/curve25519/mul_amd64.s
src/vendor/golang_org/x/crypto/curve25519/square_amd64.s

diff --git a/src/vendor/golang_org/x/crypto/curve25519/const_amd64.h b/src/vendor/golang_org/x/crypto/curve25519/const_amd64.h
new file mode 100644 (file)
index 0000000..80ad222
--- /dev/null
@@ -0,0 +1,8 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This code was translated into a form compatible with 6a from the public
+// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html
+
+#define REDMASK51     0x0007FFFFFFFFFFFF
index 797f9b051df959d3c206d2b789b6d1a0bef16488..0ad539885b7bad7cc5b3c70fdeaf5e344d1e65d8 100644 (file)
@@ -7,8 +7,8 @@
 
 // +build amd64,!gccgo,!appengine
 
-DATA ·REDMASK51(SB)/8, $0x0007FFFFFFFFFFFF
-GLOBL ·REDMASK51(SB), 8, $8
+// These constants cannot be encoded in non-MOVQ immediates.
+// We access them directly from memory instead.
 
 DATA ·_121666_213(SB)/8, $996687872
 GLOBL ·_121666_213(SB), 8, $8
index 932800b8d1b1dd144dde90d4fd15c0243318eef3..536479bf626c488fe51eda21e672532fbc56aca1 100644 (file)
@@ -7,6 +7,8 @@
 
 // +build amd64,!gccgo,!appengine
 
+#include "const_amd64.h"
+
 // func freeze(inout *[5]uint64)
 TEXT ·freeze(SB),7,$0-8
        MOVQ inout+0(FP), DI
@@ -16,7 +18,7 @@ TEXT ·freeze(SB),7,$0-8
        MOVQ 16(DI),CX
        MOVQ 24(DI),R8
        MOVQ 32(DI),R9
-       MOVQ ·REDMASK51(SB),AX
+       MOVQ $REDMASK51,AX
        MOVQ AX,R10
        SUBQ $18,R10
        MOVQ $3,R11
index ee7b36c36844c6530c1c3d6ca27593bd04198f00..7074e5cd9dcd4b1d01c3906b5459f6b042237445 100644 (file)
@@ -7,6 +7,8 @@
 
 // +build amd64,!gccgo,!appengine
 
+#include "const_amd64.h"
+
 // func ladderstep(inout *[5][5]uint64)
 TEXT ·ladderstep(SB),0,$296-8
        MOVQ inout+0(FP),DI
@@ -118,7 +120,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 72(SP)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -233,7 +235,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 32(SP)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -438,7 +440,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 72(SP)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -588,7 +590,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 32(SP)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -728,7 +730,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 152(DI)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -843,7 +845,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 192(DI)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -993,7 +995,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 32(DI)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -1143,7 +1145,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 112(SP)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
@@ -1329,7 +1331,7 @@ TEXT ·ladderstep(SB),0,$296-8
        MULQ 192(SP)
        ADDQ AX,R12
        ADCQ DX,R13
-       MOVQ ·REDMASK51(SB),DX
+       MOVQ $REDMASK51,DX
        SHLQ $13,CX:SI
        ANDQ DX,SI
        SHLQ $13,R9:R8
index 33ce57dcded44a9a7c7e457a5e6b2693d802c98e..b162e6515984ea83ebcdca8d96479fb9ab5780ad 100644 (file)
@@ -7,6 +7,8 @@
 
 // +build amd64,!gccgo,!appengine
 
+#include "const_amd64.h"
+
 // func mul(dest, a, b *[5]uint64)
 TEXT ·mul(SB),0,$16-24
        MOVQ dest+0(FP), DI
@@ -121,7 +123,7 @@ TEXT ·mul(SB),0,$16-24
        MULQ 32(CX)
        ADDQ AX,R14
        ADCQ DX,R15
-       MOVQ ·REDMASK51(SB),SI
+       MOVQ $REDMASK51,SI
        SHLQ $13,R9:R8
        ANDQ SI,R8
        SHLQ $13,R11:R10
index 3a92804ddf380df22d98317ae5fa8f0d92bdb176..4e864a83ef5ecd751c900f12fd74f9828b803804 100644 (file)
@@ -7,6 +7,8 @@
 
 // +build amd64,!gccgo,!appengine
 
+#include "const_amd64.h"
+
 // func square(out, in *[5]uint64)
 TEXT ·square(SB),7,$0-16
        MOVQ out+0(FP), DI
@@ -84,7 +86,7 @@ TEXT ·square(SB),7,$0-16
        MULQ 32(SI)
        ADDQ AX,R13
        ADCQ DX,R14
-       MOVQ ·REDMASK51(SB),SI
+       MOVQ $REDMASK51,SI
        SHLQ $13,R8:CX
        ANDQ SI,CX
        SHLQ $13,R10:R9