File tree Expand file tree Collapse file tree 3 files changed +151
-2
lines changed
src/crypto/internal/fips140/subtle Expand file tree Collapse file tree 3 files changed +151
-2
lines changed Original file line number Diff line number Diff line change
1
+ // Copyright 2025 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ //go:build !purego
6
+
7
+ #include "textflag.h"
8
+
9
+ // func xorBytes(dst, a, b *byte, n int)
10
+ TEXT ·xorBytes(SB), NOSPLIT|NOFRAME, $0
11
+ MOVW dst+0 (FP), R0
12
+ MOVW a+4 (FP), R1
13
+ MOVW b+8 (FP), R2
14
+ MOVW n+12 (FP), R3
15
+
16
+ xor_32_check:
17
+ CMP $32 , R3
18
+ BLT xor_16_check
19
+ xor_32_loop:
20
+ MOVW (R1), R4
21
+ MOVW 4 (R1), R5
22
+ MOVW 8 (R1), R6
23
+ MOVW (R2), R7
24
+ MOVW 4 (R2), R8
25
+ MOVW 8 (R2), R9
26
+ EOR R4, R7
27
+ EOR R5, R8
28
+ EOR R6, R9
29
+ MOVW R7, (R0)
30
+ MOVW R8, 4 (R0)
31
+ MOVW R9, 8 (R0)
32
+
33
+ MOVW 12 (R1), R4
34
+ MOVW 16 (R1), R5
35
+ MOVW 20 (R1), R6
36
+ MOVW 12 (R2), R7
37
+ MOVW 16 (R2), R8
38
+ MOVW 20 (R2), R9
39
+ EOR R4, R7
40
+ EOR R5, R8
41
+ EOR R6, R9
42
+ MOVW R7, 12 (R0)
43
+ MOVW R8, 16 (R0)
44
+ MOVW R9, 20 (R0)
45
+
46
+ MOVW 24 (R1), R4
47
+ MOVW 28 (R1), R5
48
+ MOVW 24 (R2), R6
49
+ MOVW 28 (R2), R7
50
+ EOR R4, R6
51
+ EOR R5, R7
52
+ MOVW R6, 24 (R0)
53
+ MOVW R7, 28 (R0)
54
+
55
+ ADD $32 , R1
56
+ ADD $32 , R2
57
+ ADD $32 , R0
58
+ SUB $32 , R3
59
+ CMP $32 , R3
60
+ BGE xor_32_loop
61
+ CMP $0 , R3
62
+ BEQ end
63
+
64
+ xor_16_check:
65
+ CMP $16 , R3
66
+ BLT xor_8_check
67
+ xor_16:
68
+ MOVW (R1), R4
69
+ MOVW 4 (R1), R5
70
+ MOVW (R2), R6
71
+ MOVW 4 (R2), R7
72
+ EOR R4, R6
73
+ EOR R5, R7
74
+ MOVW R6, (R0)
75
+ MOVW R7, 4 (R0)
76
+
77
+ MOVW 8 (R1), R4
78
+ MOVW 12 (R1), R5
79
+ MOVW 8 (R2), R6
80
+ MOVW 12 (R2), R7
81
+ EOR R4, R6
82
+ EOR R5, R7
83
+ MOVW R6, 8 (R0)
84
+ MOVW R7, 12 (R0)
85
+ ADD $16 , R1
86
+ ADD $16 , R2
87
+ ADD $16 , R0
88
+ SUB $16 , R3
89
+ CMP $0 , R3
90
+ BEQ end
91
+
92
+ xor_8_check:
93
+ CMP $8 , R3
94
+ BLT xor_4_check
95
+ xor_8:
96
+ MOVW (R1), R4
97
+ MOVW 4 (R1), R5
98
+ MOVW (R2), R6
99
+ MOVW 4 (R2), R7
100
+ EOR R4, R6
101
+ EOR R5, R7
102
+ MOVW R6, (R0)
103
+ MOVW R7, 4 (R0)
104
+
105
+ ADD $8 , R0
106
+ ADD $8 , R1
107
+ ADD $8 , R2
108
+ SUB $8 , R3
109
+ CMP $0 , R3
110
+ BEQ end
111
+
112
+ xor_4_check:
113
+ CMP $4 , R3
114
+ BLT xor_2_check
115
+ xor_4:
116
+ MOVW (R1), R4
117
+ MOVW (R2), R5
118
+ EOR R4, R5
119
+ MOVW R5, (R0)
120
+ ADD $4 , R1
121
+ ADD $4 , R2
122
+ ADD $4 , R0
123
+ SUB $4 , R3
124
+ CMP $0 , R3
125
+ BEQ end
126
+
127
+ xor_2_check:
128
+ CMP $2 , R3
129
+ BLT xor_1
130
+ xor_2:
131
+ MOVH (R1), R4
132
+ MOVH (R2), R5
133
+ EOR R4, R5
134
+ MOVH R5, (R0)
135
+ ADD $2 , R1
136
+ ADD $2 , R2
137
+ ADD $2 , R0
138
+ SUB $2 , R3
139
+ CMP $0 , R3
140
+ BEQ end
141
+
142
+ xor_1:
143
+ MOVB (R1), R4
144
+ MOVB (R2), R5
145
+ EOR R4, R5
146
+ MOVB R5, (R0)
147
+
148
+ end:
149
+ RET
Original file line number Diff line number Diff line change 2
2
// Use of this source code is governed by a BSD-style
3
3
// license that can be found in the LICENSE file.
4
4
5
- //go:build (amd64 || arm64 || loong64 || mips || mipsle || mips64 || mips64le || ppc64 || ppc64le || riscv64) && !purego
5
+ //go:build (amd64 || arm || arm64 || loong64 || mips || mipsle || mips64 || mips64le || ppc64 || ppc64le || riscv64) && !purego
6
6
7
7
package subtle
8
8
Original file line number Diff line number Diff line change 2
2
// Use of this source code is governed by a BSD-style
3
3
// license that can be found in the LICENSE file.
4
4
5
- //go:build (!amd64 && !arm64 && !loong64 && !mips && !mipsle && !mips64 && !mips64le && !ppc64 && !ppc64le && !riscv64) || purego
5
+ //go:build (!amd64 && !arm && ! arm64 && !loong64 && !mips && !mipsle && !mips64 && !mips64le && !ppc64 && !ppc64le && !riscv64) || purego
6
6
7
7
package subtle
8
8
You can’t perform that action at this time.
0 commit comments