]> Cypherpunks repositories - gostls13.git/commitdiff
Revert "crypto/internal/fips140/subtle: add assembly implementation of xorBytes for...
authorKeith Randall <khr@golang.org>
Mon, 30 Jun 2025 23:14:39 +0000 (16:14 -0700)
committerDavid Chase <drchase@google.com>
Tue, 1 Jul 2025 15:36:47 +0000 (08:36 -0700)
This reverts commit de86d02c32f6690391ed79b99d0f763bb06606d5.

Reason for revert: Causes unaligned access failures on some arm hardware

Change-Id: Ie280d2c9441f584e2a621f929db5a2e1492bed09
Reviewed-on: https://go-review.googlesource.com/c/go/+/685137
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Julian Zhu <jz531210@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
src/crypto/internal/fips140/subtle/xor_arm.s [deleted file]
src/crypto/internal/fips140/subtle/xor_asm.go
src/crypto/internal/fips140/subtle/xor_generic.go

diff --git a/src/crypto/internal/fips140/subtle/xor_arm.s b/src/crypto/internal/fips140/subtle/xor_arm.s
deleted file mode 100644 (file)
index a9e4267..0000000
+++ /dev/null
@@ -1,149 +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 !purego
-
-#include "textflag.h"
-
-// func xorBytes(dst, a, b *byte, n int)
-TEXT ·xorBytes(SB), NOSPLIT|NOFRAME, $0
-       MOVW    dst+0(FP), R0
-       MOVW    a+4(FP), R1
-       MOVW    b+8(FP), R2
-       MOVW    n+12(FP), R3
-
-xor_32_check:
-       CMP     $32, R3
-       BLT     xor_16_check
-xor_32_loop:
-       MOVW    (R1), R4
-       MOVW    4(R1), R5
-       MOVW    8(R1), R6
-       MOVW    (R2), R7
-       MOVW    4(R2), R8
-       MOVW    8(R2), R9
-       EOR     R4, R7
-       EOR     R5, R8
-       EOR     R6, R9
-       MOVW    R7, (R0)
-       MOVW    R8, 4(R0)
-       MOVW    R9, 8(R0)
-
-       MOVW    12(R1), R4
-       MOVW    16(R1), R5
-       MOVW    20(R1), R6
-       MOVW    12(R2), R7
-       MOVW    16(R2), R8
-       MOVW    20(R2), R9
-       EOR     R4, R7
-       EOR     R5, R8
-       EOR     R6, R9
-       MOVW    R7, 12(R0)
-       MOVW    R8, 16(R0)
-       MOVW    R9, 20(R0)
-
-       MOVW    24(R1), R4
-       MOVW    28(R1), R5
-       MOVW    24(R2), R6
-       MOVW    28(R2), R7
-       EOR      R4, R6
-       EOR      R5, R7
-       MOVW    R6, 24(R0)
-       MOVW    R7, 28(R0)
-
-       ADD     $32, R1
-       ADD     $32, R2
-       ADD     $32, R0
-       SUB     $32, R3
-       CMP     $32, R3
-       BGE     xor_32_loop
-       CMP     $0, R3
-       BEQ     end
-
-xor_16_check:
-       CMP     $16, R3
-       BLT     xor_8_check
-xor_16:
-       MOVW    (R1), R4
-       MOVW    4(R1), R5
-       MOVW    (R2), R6
-       MOVW    4(R2), R7
-       EOR     R4, R6
-       EOR     R5, R7
-       MOVW    R6, (R0)
-       MOVW    R7, 4(R0)
-
-       MOVW    8(R1), R4
-       MOVW    12(R1), R5
-       MOVW    8(R2), R6
-       MOVW    12(R2), R7
-       EOR     R4, R6
-       EOR     R5, R7
-       MOVW    R6, 8(R0)
-       MOVW    R7, 12(R0)
-       ADD     $16, R1
-       ADD     $16, R2
-       ADD     $16, R0
-       SUB     $16, R3
-       CMP     $0, R3
-       BEQ     end
-
-xor_8_check:
-       CMP     $8, R3
-       BLT     xor_4_check
-xor_8:
-       MOVW    (R1), R4
-       MOVW    4(R1), R5
-       MOVW    (R2), R6
-       MOVW    4(R2), R7
-       EOR     R4, R6
-       EOR     R5, R7
-       MOVW    R6, (R0)
-       MOVW    R7, 4(R0)
-
-       ADD     $8, R0
-       ADD     $8, R1
-       ADD     $8, R2
-       SUB     $8, R3
-       CMP     $0, R3
-       BEQ     end
-
-xor_4_check:
-       CMP     $4, R3
-       BLT     xor_2_check
-xor_4:
-       MOVW    (R1), R4
-       MOVW    (R2), R5
-       EOR     R4, R5
-       MOVW    R5, (R0)
-       ADD     $4, R1
-       ADD     $4, R2
-       ADD     $4, R0
-       SUB     $4, R3
-       CMP     $0, R3
-       BEQ     end
-
-xor_2_check:
-       CMP     $2, R3
-       BLT     xor_1
-xor_2:
-       MOVH    (R1), R4
-       MOVH    (R2), R5
-       EOR     R4, R5
-       MOVH    R5, (R0)
-       ADD     $2, R1
-       ADD     $2, R2
-       ADD     $2, R0
-       SUB     $2, R3
-       CMP     $0, R3
-       BEQ     end
-
-xor_1:
-       MOVB    (R1), R4
-       MOVB    (R2), R5
-       EOR     R4, R5
-       MOVB    R5, (R0)
-
-end:
-       RET
index 00f3497a028e28a3f330d9a572d4093eeb47f496..b07239da3e31c15c753048d391f0141c355d188c 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build (amd64 || arm || arm64 || mips || mipsle || mips64 || mips64le || ppc64 || ppc64le || riscv64) && !purego
+//go:build (amd64 || arm64 || mips || mipsle || mips64 || mips64le || ppc64 || ppc64le || riscv64) && !purego
 
 package subtle
 
index 06d69ca91fdcaafb061376b39afb94ce66ac03c7..ed484bc630e98d00ccd77d64bf5031c91c67a3fa 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build (!amd64 && !arm && !arm64 && !loong64 && !mips && !mipsle && !mips64 && !mips64le && !ppc64 && !ppc64le && !riscv64) || purego
+//go:build (!amd64 && !arm64 && !loong64 && !mips && !mipsle && !mips64 && !mips64le && !ppc64 && !ppc64le && !riscv64) || purego
 
 package subtle