mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
Revert "crypto/internal/fips140/subtle: add assembly implementation of xorBytes for mipsx"
This reverts commit 343e486bfd.
Reason for revert: doesn't handle unaligned accesses correctly.
Update #74998
Change-Id: I1d6210eeca9336f2ce311e99944cb270565563aa
Reviewed-on: https://go-review.googlesource.com/c/go/+/709795
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
parent
f2d0d05d28
commit
cb81270113
3 changed files with 2 additions and 214 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (amd64 || arm64 || mips || mipsle || mips64 || mips64le || ppc64 || ppc64le || riscv64) && !purego
|
//go:build (amd64 || arm64 || mips64 || mips64le || ppc64 || ppc64le || riscv64) && !purego
|
||||||
|
|
||||||
package subtle
|
package subtle
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (!amd64 && !arm64 && !loong64 && !mips && !mipsle && !mips64 && !mips64le && !ppc64 && !ppc64le && !riscv64) || purego
|
//go:build (!amd64 && !arm64 && !loong64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !riscv64) || purego
|
||||||
|
|
||||||
package subtle
|
package subtle
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,212 +0,0 @@
|
||||||
// Copyright 2025 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.
|
|
||||||
|
|
||||||
//go:build (mips || mipsle) && !purego
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
// func xorBytes(dst, a, b *byte, n int)
|
|
||||||
TEXT ·xorBytes(SB), NOSPLIT|NOFRAME, $0
|
|
||||||
MOVW dst+0(FP), R1
|
|
||||||
MOVW a+4(FP), R2
|
|
||||||
MOVW b+8(FP), R3
|
|
||||||
MOVW n+12(FP), R4
|
|
||||||
|
|
||||||
SGTU $64, R4, R5 // R5 = 1 if (64 > R4)
|
|
||||||
BNE R5, xor_32_check
|
|
||||||
xor_64:
|
|
||||||
MOVW (R2), R6
|
|
||||||
MOVW 4(R2), R7
|
|
||||||
MOVW 8(R2), R8
|
|
||||||
MOVW 12(R2), R9
|
|
||||||
MOVW (R3), R10
|
|
||||||
MOVW 4(R3), R11
|
|
||||||
MOVW 8(R3), R12
|
|
||||||
MOVW 12(R3), R13
|
|
||||||
XOR R6, R10
|
|
||||||
XOR R7, R11
|
|
||||||
XOR R8, R12
|
|
||||||
XOR R9, R13
|
|
||||||
MOVW R10, (R1)
|
|
||||||
MOVW R11, 4(R1)
|
|
||||||
MOVW R12, 8(R1)
|
|
||||||
MOVW R13, 12(R1)
|
|
||||||
MOVW 16(R2), R6
|
|
||||||
MOVW 20(R2), R7
|
|
||||||
MOVW 24(R2), R8
|
|
||||||
MOVW 28(R2), R9
|
|
||||||
MOVW 16(R3), R10
|
|
||||||
MOVW 20(R3), R11
|
|
||||||
MOVW 24(R3), R12
|
|
||||||
MOVW 28(R3), R13
|
|
||||||
XOR R6, R10
|
|
||||||
XOR R7, R11
|
|
||||||
XOR R8, R12
|
|
||||||
XOR R9, R13
|
|
||||||
MOVW R10, 16(R1)
|
|
||||||
MOVW R11, 20(R1)
|
|
||||||
MOVW R12, 24(R1)
|
|
||||||
MOVW R13, 28(R1)
|
|
||||||
MOVW 32(R2), R6
|
|
||||||
MOVW 36(R2), R7
|
|
||||||
MOVW 40(R2), R8
|
|
||||||
MOVW 44(R2), R9
|
|
||||||
MOVW 32(R3), R10
|
|
||||||
MOVW 36(R3), R11
|
|
||||||
MOVW 40(R3), R12
|
|
||||||
MOVW 44(R3), R13
|
|
||||||
XOR R6, R10
|
|
||||||
XOR R7, R11
|
|
||||||
XOR R8, R12
|
|
||||||
XOR R9, R13
|
|
||||||
MOVW R10, 32(R1)
|
|
||||||
MOVW R11, 36(R1)
|
|
||||||
MOVW R12, 40(R1)
|
|
||||||
MOVW R13, 44(R1)
|
|
||||||
MOVW 48(R2), R6
|
|
||||||
MOVW 52(R2), R7
|
|
||||||
MOVW 56(R2), R8
|
|
||||||
MOVW 60(R2), R9
|
|
||||||
MOVW 48(R3), R10
|
|
||||||
MOVW 52(R3), R11
|
|
||||||
MOVW 56(R3), R12
|
|
||||||
MOVW 60(R3), R13
|
|
||||||
XOR R6, R10
|
|
||||||
XOR R7, R11
|
|
||||||
XOR R8, R12
|
|
||||||
XOR R9, R13
|
|
||||||
MOVW R10, 48(R1)
|
|
||||||
MOVW R11, 52(R1)
|
|
||||||
MOVW R12, 56(R1)
|
|
||||||
MOVW R13, 60(R1)
|
|
||||||
ADD $64, R2
|
|
||||||
ADD $64, R3
|
|
||||||
ADD $64, R1
|
|
||||||
SUB $64, R4
|
|
||||||
SGTU $64, R4, R5
|
|
||||||
BEQ R0, R5, xor_64
|
|
||||||
BEQ R0, R4, end
|
|
||||||
|
|
||||||
xor_32_check:
|
|
||||||
SGTU $32, R4, R5
|
|
||||||
BNE R5, xor_16_check
|
|
||||||
xor_32:
|
|
||||||
MOVW (R2), R6
|
|
||||||
MOVW 4(R2), R7
|
|
||||||
MOVW 8(R2), R8
|
|
||||||
MOVW 12(R2), R9
|
|
||||||
MOVW (R3), R10
|
|
||||||
MOVW 4(R3), R11
|
|
||||||
MOVW 8(R3), R12
|
|
||||||
MOVW 12(R3), R13
|
|
||||||
XOR R6, R10
|
|
||||||
XOR R7, R11
|
|
||||||
XOR R8, R12
|
|
||||||
XOR R9, R13
|
|
||||||
MOVW R10, (R1)
|
|
||||||
MOVW R11, 4(R1)
|
|
||||||
MOVW R12, 8(R1)
|
|
||||||
MOVW R13, 12(R1)
|
|
||||||
MOVW 16(R2), R6
|
|
||||||
MOVW 20(R2), R7
|
|
||||||
MOVW 24(R2), R8
|
|
||||||
MOVW 28(R2), R9
|
|
||||||
MOVW 16(R3), R10
|
|
||||||
MOVW 20(R3), R11
|
|
||||||
MOVW 24(R3), R12
|
|
||||||
MOVW 28(R3), R13
|
|
||||||
XOR R6, R10
|
|
||||||
XOR R7, R11
|
|
||||||
XOR R8, R12
|
|
||||||
XOR R9, R13
|
|
||||||
MOVW R10, 16(R1)
|
|
||||||
MOVW R11, 20(R1)
|
|
||||||
MOVW R12, 24(R1)
|
|
||||||
MOVW R13, 28(R1)
|
|
||||||
ADD $32, R2
|
|
||||||
ADD $32, R3
|
|
||||||
ADD $32, R1
|
|
||||||
SUB $32, R4
|
|
||||||
BEQ R0, R4, end
|
|
||||||
|
|
||||||
xor_16_check:
|
|
||||||
SGTU $16, R4, R5
|
|
||||||
BNE R5, xor_8_check
|
|
||||||
xor_16:
|
|
||||||
MOVW (R2), R6
|
|
||||||
MOVW 4(R2), R7
|
|
||||||
MOVW 8(R2), R8
|
|
||||||
MOVW 12(R2), R9
|
|
||||||
MOVW (R3), R10
|
|
||||||
MOVW 4(R3), R11
|
|
||||||
MOVW 8(R3), R12
|
|
||||||
MOVW 12(R3), R13
|
|
||||||
XOR R6, R10
|
|
||||||
XOR R7, R11
|
|
||||||
XOR R8, R12
|
|
||||||
XOR R9, R13
|
|
||||||
MOVW R10, (R1)
|
|
||||||
MOVW R11, 4(R1)
|
|
||||||
MOVW R12, 8(R1)
|
|
||||||
MOVW R13, 12(R1)
|
|
||||||
ADD $16, R2
|
|
||||||
ADD $16, R3
|
|
||||||
ADD $16, R1
|
|
||||||
SUB $16, R4
|
|
||||||
BEQ R0, R4, end
|
|
||||||
|
|
||||||
xor_8_check:
|
|
||||||
SGTU $8, R4, R5
|
|
||||||
BNE R5, xor_4_check
|
|
||||||
xor_8:
|
|
||||||
MOVW (R2), R6
|
|
||||||
MOVW 4(R2), R7
|
|
||||||
MOVW (R3), R8
|
|
||||||
MOVW 4(R3), R9
|
|
||||||
XOR R6, R8
|
|
||||||
XOR R7, R9
|
|
||||||
MOVW R8, (R1)
|
|
||||||
MOVW R9, 4(R1)
|
|
||||||
ADD $8, R1
|
|
||||||
ADD $8, R2
|
|
||||||
ADD $8, R3
|
|
||||||
SUB $8, R4
|
|
||||||
BEQ R0, R4, end
|
|
||||||
|
|
||||||
xor_4_check:
|
|
||||||
SGTU $4, R4, R5
|
|
||||||
BNE R5, xor_2_check
|
|
||||||
xor_4:
|
|
||||||
MOVW (R2), R6
|
|
||||||
MOVW (R3), R7
|
|
||||||
XOR R6, R7
|
|
||||||
MOVW R7, (R1)
|
|
||||||
ADD $4, R2
|
|
||||||
ADD $4, R3
|
|
||||||
ADD $4, R1
|
|
||||||
SUB $4, R4
|
|
||||||
BEQ R0, R4, end
|
|
||||||
|
|
||||||
xor_2_check:
|
|
||||||
SGTU $2, R4, R5
|
|
||||||
BNE R5, xor_1
|
|
||||||
xor_2:
|
|
||||||
MOVH (R2), R6
|
|
||||||
MOVH (R3), R7
|
|
||||||
XOR R6, R7
|
|
||||||
MOVH R7, (R1)
|
|
||||||
ADD $2, R2
|
|
||||||
ADD $2, R3
|
|
||||||
ADD $2, R1
|
|
||||||
SUB $2, R4
|
|
||||||
BEQ R0, R4, end
|
|
||||||
|
|
||||||
xor_1:
|
|
||||||
MOVB (R2), R6
|
|
||||||
MOVB (R3), R7
|
|
||||||
XOR R6, R7
|
|
||||||
MOVB R7, (R1)
|
|
||||||
|
|
||||||
end:
|
|
||||||
RET
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue