Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1130)

Side by Side Diff: third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S

Issue 1131163003: Revert "Roll src/third_party/boringssl/src 68de407:65a7e94" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #if defined(__arm__) 1 #if defined(__arm__)
2 #include "arm_arch.h" 2 #include "arm_arch.h"
3 3
4 .syntax»unified 4 .syntax unified
5 5
6 .text 6 .text
7 .code 32 7 .code 32
8 8
9 #ifdef __APPLE__
10 #define ldrplb ldrbpl
11 #define ldrneb ldrbne
12 #endif
13
14 .type rem_4bit,%object 9 .type rem_4bit,%object
15 .align 5 10 .align 5
16 rem_4bit: 11 rem_4bit:
17 .short 0x0000,0x1C20,0x3840,0x2460 12 .short 0x0000,0x1C20,0x3840,0x2460
18 .short 0x7080,0x6CA0,0x48C0,0x54E0 13 .short 0x7080,0x6CA0,0x48C0,0x54E0
19 .short 0xE100,0xFD20,0xD940,0xC560 14 .short 0xE100,0xFD20,0xD940,0xC560
20 .short 0x9180,0x8DA0,0xA9C0,0xB5E0 15 .short 0x9180,0x8DA0,0xA9C0,0xB5E0
21 .size rem_4bit,.-rem_4bit 16 .size rem_4bit,.-rem_4bit
22 17
23 .type rem_4bit_get,%function 18 .type rem_4bit_get,%function
24 rem_4bit_get: 19 rem_4bit_get:
25 sub r2,pc,#8 20 sub r2,pc,#8
26 sub r2,r2,#32 @ &rem_4bit 21 sub r2,r2,#32 @ &rem_4bit
27 b .Lrem_4bit_got 22 b .Lrem_4bit_got
28 nop 23 nop
29 .size rem_4bit_get,.-rem_4bit_get 24 .size rem_4bit_get,.-rem_4bit_get
30 25
31 .globl» gcm_ghash_4bit 26 .global»gcm_ghash_4bit
32 .hidden gcm_ghash_4bit 27 .hidden gcm_ghash_4bit
33 .type gcm_ghash_4bit,%function 28 .type gcm_ghash_4bit,%function
34 gcm_ghash_4bit: 29 gcm_ghash_4bit:
35 sub r12,pc,#8 30 sub r12,pc,#8
36 add r3,r2,r3 @ r3 to point at the end 31 add r3,r2,r3 @ r3 to point at the end
37 » stmdb» sp!,{r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}» » @ save r3/end to o 32 » stmdb» sp!,{r3-r11,lr}»» @ save r3/end too
38 sub r12,r12,#48 @ &rem_4bit 33 sub r12,r12,#48 @ &rem_4bit
39 34
40 » ldmia» r12,{r4,r5,r6,r7,r8,r9,r10,r11}»» @ copy rem_4bit ... 35 » ldmia» r12,{r4-r11}» » @ copy rem_4bit ...
41 » stmdb» sp!,{r4,r5,r6,r7,r8,r9,r10,r11}»» @ ... to stack 36 » stmdb» sp!,{r4-r11}» » @ ... to stack
42 37
43 ldrb r12,[r2,#15] 38 ldrb r12,[r2,#15]
44 ldrb r14,[r0,#15] 39 ldrb r14,[r0,#15]
45 .Louter: 40 .Louter:
46 eor r12,r12,r14 41 eor r12,r12,r14
47 and r14,r12,#0xf0 42 and r14,r12,#0xf0
48 and r12,r12,#0x0f 43 and r12,r12,#0x0f
49 mov r3,#14 44 mov r3,#14
50 45
51 add r7,r1,r12,lsl#4 46 add r7,r1,r12,lsl#4
52 » ldmia» r7,{r4,r5,r6,r7}» @ load Htbl[nlo] 47 » ldmia» r7,{r4-r7}» @ load Htbl[nlo]
53 add r11,r1,r14 48 add r11,r1,r14
54 ldrb r12,[r2,#14] 49 ldrb r12,[r2,#14]
55 50
56 and r14,r4,#0xf @ rem 51 and r14,r4,#0xf @ rem
57 » ldmia» r11,{r8,r9,r10,r11}» @ load Htbl[nhi] 52 » ldmia» r11,{r8-r11}» @ load Htbl[nhi]
58 add r14,r14,r14 53 add r14,r14,r14
59 eor r4,r8,r4,lsr#4 54 eor r4,r8,r4,lsr#4
60 ldrh r8,[sp,r14] @ rem_4bit[rem] 55 ldrh r8,[sp,r14] @ rem_4bit[rem]
61 eor r4,r4,r5,lsl#28 56 eor r4,r4,r5,lsl#28
62 ldrb r14,[r0,#14] 57 ldrb r14,[r0,#14]
63 eor r5,r9,r5,lsr#4 58 eor r5,r9,r5,lsr#4
64 eor r5,r5,r6,lsl#28 59 eor r5,r5,r6,lsl#28
65 eor r6,r10,r6,lsr#4 60 eor r6,r10,r6,lsr#4
66 eor r6,r6,r7,lsl#28 61 eor r6,r6,r7,lsl#28
67 eor r7,r11,r7,lsr#4 62 eor r7,r11,r7,lsr#4
68 eor r12,r12,r14 63 eor r12,r12,r14
69 and r14,r12,#0xf0 64 and r14,r12,#0xf0
70 and r12,r12,#0x0f 65 and r12,r12,#0x0f
71 eor r7,r7,r8,lsl#16 66 eor r7,r7,r8,lsl#16
72 67
73 .Linner: 68 .Linner:
74 add r11,r1,r12,lsl#4 69 add r11,r1,r12,lsl#4
75 and r12,r4,#0xf @ rem 70 and r12,r4,#0xf @ rem
76 subs r3,r3,#1 71 subs r3,r3,#1
77 add r12,r12,r12 72 add r12,r12,r12
78 » ldmia» r11,{r8,r9,r10,r11}» @ load Htbl[nlo] 73 » ldmia» r11,{r8-r11}» @ load Htbl[nlo]
79 eor r4,r8,r4,lsr#4 74 eor r4,r8,r4,lsr#4
80 eor r4,r4,r5,lsl#28 75 eor r4,r4,r5,lsl#28
81 eor r5,r9,r5,lsr#4 76 eor r5,r9,r5,lsr#4
82 eor r5,r5,r6,lsl#28 77 eor r5,r5,r6,lsl#28
83 ldrh r8,[sp,r12] @ rem_4bit[rem] 78 ldrh r8,[sp,r12] @ rem_4bit[rem]
84 eor r6,r10,r6,lsr#4 79 eor r6,r10,r6,lsr#4
85 ldrbpl r12,[r2,r3] 80 ldrbpl r12,[r2,r3]
86 eor r6,r6,r7,lsl#28 81 eor r6,r6,r7,lsl#28
87 eor r7,r11,r7,lsr#4 82 eor r7,r11,r7,lsr#4
88 83
89 add r11,r1,r14 84 add r11,r1,r14
90 and r14,r4,#0xf @ rem 85 and r14,r4,#0xf @ rem
91 eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem] 86 eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem]
92 add r14,r14,r14 87 add r14,r14,r14
93 » ldmia» r11,{r8,r9,r10,r11}» @ load Htbl[nhi] 88 » ldmia» r11,{r8-r11}» @ load Htbl[nhi]
94 eor r4,r8,r4,lsr#4 89 eor r4,r8,r4,lsr#4
95 ldrbpl r8,[r0,r3] 90 ldrbpl r8,[r0,r3]
96 eor r4,r4,r5,lsl#28 91 eor r4,r4,r5,lsl#28
97 eor r5,r9,r5,lsr#4 92 eor r5,r9,r5,lsr#4
98 ldrh r9,[sp,r14] 93 ldrh r9,[sp,r14]
99 eor r5,r5,r6,lsl#28 94 eor r5,r5,r6,lsl#28
100 eor r6,r10,r6,lsr#4 95 eor r6,r10,r6,lsr#4
101 eor r6,r6,r7,lsl#28 96 eor r6,r6,r7,lsl#28
102 eorpl r12,r12,r8 97 eorpl r12,r12,r8
103 eor r7,r11,r7,lsr#4 98 eor r7,r11,r7,lsr#4
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 str r6,[r0,#4] 141 str r6,[r0,#4]
147 #else 142 #else
148 mov r9,r6,lsr#8 143 mov r9,r6,lsr#8
149 strb r6,[r0,#4+3] 144 strb r6,[r0,#4+3]
150 mov r10,r6,lsr#16 145 mov r10,r6,lsr#16
151 strb r9,[r0,#4+2] 146 strb r9,[r0,#4+2]
152 mov r11,r6,lsr#24 147 mov r11,r6,lsr#24
153 strb r10,[r0,#4+1] 148 strb r10,[r0,#4+1]
154 strb r11,[r0,#4] 149 strb r11,[r0,#4]
155 #endif 150 #endif
156 151 »
157 #if __ARM_ARCH__>=7 && defined(__ARMEL__) 152 #if __ARM_ARCH__>=7 && defined(__ARMEL__)
158 rev r7,r7 153 rev r7,r7
159 str r7,[r0,#0] 154 str r7,[r0,#0]
160 #elif defined(__ARMEB__) 155 #elif defined(__ARMEB__)
161 str r7,[r0,#0] 156 str r7,[r0,#0]
162 #else 157 #else
163 mov r9,r7,lsr#8 158 mov r9,r7,lsr#8
164 strb r7,[r0,#0+3] 159 strb r7,[r0,#0+3]
165 mov r10,r7,lsr#16 160 mov r10,r7,lsr#16
166 strb r9,[r0,#0+2] 161 strb r9,[r0,#0+2]
167 mov r11,r7,lsr#24 162 mov r11,r7,lsr#24
168 strb r10,[r0,#0+1] 163 strb r10,[r0,#0+1]
169 strb r11,[r0,#0] 164 strb r11,[r0,#0]
170 #endif 165 #endif
171 166 »
172 bne .Louter 167 bne .Louter
173 168
174 add sp,sp,#36 169 add sp,sp,#36
175 #if __ARM_ARCH__>=5 170 #if __ARM_ARCH__>=5
176 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} 171 » ldmia» sp!,{r4-r11,pc}
177 #else 172 #else
178 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr} 173 » ldmia» sp!,{r4-r11,lr}
179 tst lr,#1 174 tst lr,#1
180 moveq pc,lr @ be binary compatible with V4, yet 175 moveq pc,lr @ be binary compatible with V4, yet
181 .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-) 176 » .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:- )
182 #endif 177 #endif
183 .size gcm_ghash_4bit,.-gcm_ghash_4bit 178 .size gcm_ghash_4bit,.-gcm_ghash_4bit
184 179
185 .globl» gcm_gmult_4bit 180 .global»gcm_gmult_4bit
186 .hidden gcm_gmult_4bit 181 .hidden gcm_gmult_4bit
187 .type gcm_gmult_4bit,%function 182 .type gcm_gmult_4bit,%function
188 gcm_gmult_4bit: 183 gcm_gmult_4bit:
189 » stmdb» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr} 184 » stmdb» sp!,{r4-r11,lr}
190 ldrb r12,[r0,#15] 185 ldrb r12,[r0,#15]
191 b rem_4bit_get 186 b rem_4bit_get
192 .Lrem_4bit_got: 187 .Lrem_4bit_got:
193 and r14,r12,#0xf0 188 and r14,r12,#0xf0
194 and r12,r12,#0x0f 189 and r12,r12,#0x0f
195 mov r3,#14 190 mov r3,#14
196 191
197 add r7,r1,r12,lsl#4 192 add r7,r1,r12,lsl#4
198 » ldmia» r7,{r4,r5,r6,r7}» @ load Htbl[nlo] 193 » ldmia» r7,{r4-r7}» @ load Htbl[nlo]
199 ldrb r12,[r0,#14] 194 ldrb r12,[r0,#14]
200 195
201 add r11,r1,r14 196 add r11,r1,r14
202 and r14,r4,#0xf @ rem 197 and r14,r4,#0xf @ rem
203 » ldmia» r11,{r8,r9,r10,r11}» @ load Htbl[nhi] 198 » ldmia» r11,{r8-r11}» @ load Htbl[nhi]
204 add r14,r14,r14 199 add r14,r14,r14
205 eor r4,r8,r4,lsr#4 200 eor r4,r8,r4,lsr#4
206 ldrh r8,[r2,r14] @ rem_4bit[rem] 201 ldrh r8,[r2,r14] @ rem_4bit[rem]
207 eor r4,r4,r5,lsl#28 202 eor r4,r4,r5,lsl#28
208 eor r5,r9,r5,lsr#4 203 eor r5,r9,r5,lsr#4
209 eor r5,r5,r6,lsl#28 204 eor r5,r5,r6,lsl#28
210 eor r6,r10,r6,lsr#4 205 eor r6,r10,r6,lsr#4
211 eor r6,r6,r7,lsl#28 206 eor r6,r6,r7,lsl#28
212 eor r7,r11,r7,lsr#4 207 eor r7,r11,r7,lsr#4
213 and r14,r12,#0xf0 208 and r14,r12,#0xf0
214 eor r7,r7,r8,lsl#16 209 eor r7,r7,r8,lsl#16
215 and r12,r12,#0x0f 210 and r12,r12,#0x0f
216 211
217 .Loop: 212 .Loop:
218 add r11,r1,r12,lsl#4 213 add r11,r1,r12,lsl#4
219 and r12,r4,#0xf @ rem 214 and r12,r4,#0xf @ rem
220 subs r3,r3,#1 215 subs r3,r3,#1
221 add r12,r12,r12 216 add r12,r12,r12
222 » ldmia» r11,{r8,r9,r10,r11}» @ load Htbl[nlo] 217 » ldmia» r11,{r8-r11}» @ load Htbl[nlo]
223 eor r4,r8,r4,lsr#4 218 eor r4,r8,r4,lsr#4
224 eor r4,r4,r5,lsl#28 219 eor r4,r4,r5,lsl#28
225 eor r5,r9,r5,lsr#4 220 eor r5,r9,r5,lsr#4
226 eor r5,r5,r6,lsl#28 221 eor r5,r5,r6,lsl#28
227 ldrh r8,[r2,r12] @ rem_4bit[rem] 222 ldrh r8,[r2,r12] @ rem_4bit[rem]
228 eor r6,r10,r6,lsr#4 223 eor r6,r10,r6,lsr#4
229 ldrbpl r12,[r0,r3] 224 ldrbpl r12,[r0,r3]
230 eor r6,r6,r7,lsl#28 225 eor r6,r6,r7,lsl#28
231 eor r7,r11,r7,lsr#4 226 eor r7,r11,r7,lsr#4
232 227
233 add r11,r1,r14 228 add r11,r1,r14
234 and r14,r4,#0xf @ rem 229 and r14,r4,#0xf @ rem
235 eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem] 230 eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem]
236 add r14,r14,r14 231 add r14,r14,r14
237 » ldmia» r11,{r8,r9,r10,r11}» @ load Htbl[nhi] 232 » ldmia» r11,{r8-r11}» @ load Htbl[nhi]
238 eor r4,r8,r4,lsr#4 233 eor r4,r8,r4,lsr#4
239 eor r4,r4,r5,lsl#28 234 eor r4,r4,r5,lsl#28
240 eor r5,r9,r5,lsr#4 235 eor r5,r9,r5,lsr#4
241 ldrh r8,[r2,r14] @ rem_4bit[rem] 236 ldrh r8,[r2,r14] @ rem_4bit[rem]
242 eor r5,r5,r6,lsl#28 237 eor r5,r5,r6,lsl#28
243 eor r6,r10,r6,lsr#4 238 eor r6,r10,r6,lsr#4
244 eor r6,r6,r7,lsl#28 239 eor r6,r6,r7,lsl#28
245 eor r7,r11,r7,lsr#4 240 eor r7,r11,r7,lsr#4
246 andpl r14,r12,#0xf0 241 andpl r14,r12,#0xf0
247 andpl r12,r12,#0x0f 242 andpl r12,r12,#0x0f
248 eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem] 243 eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem]
249 bpl .Loop 244 bpl .Loop
250 #if __ARM_ARCH__>=7 && defined(__ARMEL__) 245 #if __ARM_ARCH__>=7 && defined(__ARMEL__)
251 rev r4,r4 246 rev r4,r4
252 str r4,[r0,#12] 247 str r4,[r0,#12]
253 #elif defined(__ARMEB__) 248 #elif defined(__ARMEB__)
254 str r4,[r0,#12] 249 str r4,[r0,#12]
255 #else 250 #else
256 mov r9,r4,lsr#8 251 mov r9,r4,lsr#8
257 strb r4,[r0,#12+3] 252 strb r4,[r0,#12+3]
258 mov r10,r4,lsr#16 253 mov r10,r4,lsr#16
259 strb r9,[r0,#12+2] 254 strb r9,[r0,#12+2]
260 mov r11,r4,lsr#24 255 mov r11,r4,lsr#24
261 strb r10,[r0,#12+1] 256 strb r10,[r0,#12+1]
262 strb r11,[r0,#12] 257 strb r11,[r0,#12]
263 #endif 258 #endif
264 259 »
265 #if __ARM_ARCH__>=7 && defined(__ARMEL__) 260 #if __ARM_ARCH__>=7 && defined(__ARMEL__)
266 rev r5,r5 261 rev r5,r5
267 str r5,[r0,#8] 262 str r5,[r0,#8]
268 #elif defined(__ARMEB__) 263 #elif defined(__ARMEB__)
269 str r5,[r0,#8] 264 str r5,[r0,#8]
270 #else 265 #else
271 mov r9,r5,lsr#8 266 mov r9,r5,lsr#8
272 strb r5,[r0,#8+3] 267 strb r5,[r0,#8+3]
273 mov r10,r5,lsr#16 268 mov r10,r5,lsr#16
274 strb r9,[r0,#8+2] 269 strb r9,[r0,#8+2]
275 mov r11,r5,lsr#24 270 mov r11,r5,lsr#24
276 strb r10,[r0,#8+1] 271 strb r10,[r0,#8+1]
277 strb r11,[r0,#8] 272 strb r11,[r0,#8]
278 #endif 273 #endif
279 274 »
280 #if __ARM_ARCH__>=7 && defined(__ARMEL__) 275 #if __ARM_ARCH__>=7 && defined(__ARMEL__)
281 rev r6,r6 276 rev r6,r6
282 str r6,[r0,#4] 277 str r6,[r0,#4]
283 #elif defined(__ARMEB__) 278 #elif defined(__ARMEB__)
284 str r6,[r0,#4] 279 str r6,[r0,#4]
285 #else 280 #else
286 mov r9,r6,lsr#8 281 mov r9,r6,lsr#8
287 strb r6,[r0,#4+3] 282 strb r6,[r0,#4+3]
288 mov r10,r6,lsr#16 283 mov r10,r6,lsr#16
289 strb r9,[r0,#4+2] 284 strb r9,[r0,#4+2]
290 mov r11,r6,lsr#24 285 mov r11,r6,lsr#24
291 strb r10,[r0,#4+1] 286 strb r10,[r0,#4+1]
292 strb r11,[r0,#4] 287 strb r11,[r0,#4]
293 #endif 288 #endif
294 289 »
295 #if __ARM_ARCH__>=7 && defined(__ARMEL__) 290 #if __ARM_ARCH__>=7 && defined(__ARMEL__)
296 rev r7,r7 291 rev r7,r7
297 str r7,[r0,#0] 292 str r7,[r0,#0]
298 #elif defined(__ARMEB__) 293 #elif defined(__ARMEB__)
299 str r7,[r0,#0] 294 str r7,[r0,#0]
300 #else 295 #else
301 mov r9,r7,lsr#8 296 mov r9,r7,lsr#8
302 strb r7,[r0,#0+3] 297 strb r7,[r0,#0+3]
303 mov r10,r7,lsr#16 298 mov r10,r7,lsr#16
304 strb r9,[r0,#0+2] 299 strb r9,[r0,#0+2]
305 mov r11,r7,lsr#24 300 mov r11,r7,lsr#24
306 strb r10,[r0,#0+1] 301 strb r10,[r0,#0+1]
307 strb r11,[r0,#0] 302 strb r11,[r0,#0]
308 #endif 303 #endif
309 304 »
310 #if __ARM_ARCH__>=5 305 #if __ARM_ARCH__>=5
311 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc} 306 » ldmia» sp!,{r4-r11,pc}
312 #else 307 #else
313 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr} 308 » ldmia» sp!,{r4-r11,lr}
314 tst lr,#1 309 tst lr,#1
315 moveq pc,lr @ be binary compatible with V4, yet 310 moveq pc,lr @ be binary compatible with V4, yet
316 .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-) 311 » .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:- )
317 #endif 312 #endif
318 .size gcm_gmult_4bit,.-gcm_gmult_4bit 313 .size gcm_gmult_4bit,.-gcm_gmult_4bit
319 #if __ARM_MAX_ARCH__>=7 314 #if __ARM_ARCH__>=7
320 .arch» armv7-a
321 .fpu neon 315 .fpu neon
322 316
323 .globl» gcm_init_neon 317 .global»gcm_init_neon
324 .hidden gcm_init_neon 318 .hidden gcm_init_neon
325 .type gcm_init_neon,%function 319 .type gcm_init_neon,%function
326 .align 4 320 .align 4
327 gcm_init_neon: 321 gcm_init_neon:
328 » vld1.64»d7,[r1]!» » @ load H 322 » vld1.64»» d7,[r1,:64]!» @ load H
329 » vmov.i8»q8,#0xe1 323 » vmov.i8»» q8,#0xe1
330 » vld1.64»d6,[r1] 324 » vld1.64»» d6,[r1,:64]
331 vshl.i64 d17,#57 325 vshl.i64 d17,#57
332 vshr.u64 d16,#63 @ t0=0xc2....01 326 vshr.u64 d16,#63 @ t0=0xc2....01
333 » vdup.8» q9,d7[7] 327 » vdup.8» » q9,d7[7]
334 vshr.u64 d26,d6,#63 328 vshr.u64 d26,d6,#63
335 » vshr.s8»q9,#7» » » @ broadcast carry bit 329 » vshr.s8»» q9,#7» » » @ broadcast carry bit
336 vshl.i64 q3,q3,#1 330 vshl.i64 q3,q3,#1
337 » vand» q8,q8,q9 331 » vand» » q8,q8,q9
338 » vorr» d7,d26» » @ H<<<=1 332 » vorr» » d7,d26» » @ H<<<=1
339 » veor» q3,q3,q8» » @ twisted H 333 » veor» » q3,q3,q8» » @ twisted H
340 » vstmia» r0,{q3} 334 » vstmia» » r0,{q3}
341 335
342 » bx» lr» » » » » @ bx lr 336 » .word» 0xe12fff1e
343 .size gcm_init_neon,.-gcm_init_neon 337 .size gcm_init_neon,.-gcm_init_neon
344 338
345 .globl» gcm_gmult_neon 339 .global»gcm_gmult_neon
346 .hidden gcm_gmult_neon 340 .hidden gcm_gmult_neon
347 .type gcm_gmult_neon,%function 341 .type gcm_gmult_neon,%function
348 .align 4 342 .align 4
349 gcm_gmult_neon: 343 gcm_gmult_neon:
350 » vld1.64»d7,[r0]!» » @ load Xi 344 » vld1.64»» d7,[r0,:64]!» @ load Xi
351 » vld1.64»d6,[r0]! 345 » vld1.64»» d6,[r0,:64]!
352 vmov.i64 d29,#0x0000ffffffffffff 346 vmov.i64 d29,#0x0000ffffffffffff
353 » vldmia» r1,{d26,d27}» @ load twisted H 347 » vldmia» » r1,{d26-d27}» @ load twisted H
354 vmov.i64 d30,#0x00000000ffffffff 348 vmov.i64 d30,#0x00000000ffffffff
355 #ifdef __ARMEL__ 349 #ifdef __ARMEL__
356 vrev64.8 q3,q3 350 vrev64.8 q3,q3
357 #endif 351 #endif
358 vmov.i64 d31,#0x000000000000ffff 352 vmov.i64 d31,#0x000000000000ffff
359 » veor» d28,d26,d27» » @ Karatsuba pre-processing 353 » veor» » d28,d26,d27» » @ Karatsuba pre-processing
360 » mov» r3,#16 354 » mov» » r3,#16
361 » b» .Lgmult_neon 355 » b» » .Lgmult_neon
362 .size gcm_gmult_neon,.-gcm_gmult_neon 356 .size gcm_gmult_neon,.-gcm_gmult_neon
363 357
364 .globl» gcm_ghash_neon 358 .global»gcm_ghash_neon
365 .hidden gcm_ghash_neon 359 .hidden gcm_ghash_neon
366 .type gcm_ghash_neon,%function 360 .type gcm_ghash_neon,%function
367 .align 4 361 .align 4
368 gcm_ghash_neon: 362 gcm_ghash_neon:
369 » vld1.64»d1,[r0]!» » @ load Xi 363 » vld1.64»» d1,[r0,:64]!» @ load Xi
370 » vld1.64»d0,[r0]! 364 » vld1.64»» d0,[r0,:64]!
371 vmov.i64 d29,#0x0000ffffffffffff 365 vmov.i64 d29,#0x0000ffffffffffff
372 » vldmia» r1,{d26,d27}» @ load twisted H 366 » vldmia» » r1,{d26-d27}» @ load twisted H
373 vmov.i64 d30,#0x00000000ffffffff 367 vmov.i64 d30,#0x00000000ffffffff
374 #ifdef __ARMEL__ 368 #ifdef __ARMEL__
375 vrev64.8 q0,q0 369 vrev64.8 q0,q0
376 #endif 370 #endif
377 vmov.i64 d31,#0x000000000000ffff 371 vmov.i64 d31,#0x000000000000ffff
378 » veor» d28,d26,d27» » @ Karatsuba pre-processing 372 » veor» » d28,d26,d27» » @ Karatsuba pre-processing
379 373
380 .Loop_neon: 374 .Loop_neon:
381 » vld1.64»d7,[r2]!» » @ load inp 375 » vld1.64»» d7,[r2]!» » @ load inp
382 » vld1.64»d6,[r2]! 376 » vld1.64»» d6,[r2]!
383 #ifdef __ARMEL__ 377 #ifdef __ARMEL__
384 vrev64.8 q3,q3 378 vrev64.8 q3,q3
385 #endif 379 #endif
386 » veor» q3,q0» » » @ inp^=Xi 380 » veor» » q3,q0» » » @ inp^=Xi
387 .Lgmult_neon: 381 .Lgmult_neon:
388 » vext.8» d16, d26, d26, #1» @ A1 382 » vext.8» » d16, d26, d26, #1» @ A1
389 vmull.p8 q8, d16, d6 @ F = A1*B 383 vmull.p8 q8, d16, d6 @ F = A1*B
390 » vext.8» d0, d6, d6, #1» @ B1 384 » vext.8» » d0, d6, d6, #1» @ B1
391 vmull.p8 q0, d26, d0 @ E = A*B1 385 vmull.p8 q0, d26, d0 @ E = A*B1
392 » vext.8» d18, d26, d26, #2» @ A2 386 » vext.8» » d18, d26, d26, #2» @ A2
393 vmull.p8 q9, d18, d6 @ H = A2*B 387 vmull.p8 q9, d18, d6 @ H = A2*B
394 » vext.8» d22, d6, d6, #2»@ B2 388 » vext.8» » d22, d6, d6, #2»@ B2
395 vmull.p8 q11, d26, d22 @ G = A*B2 389 vmull.p8 q11, d26, d22 @ G = A*B2
396 » vext.8» d20, d26, d26, #3» @ A3 390 » vext.8» » d20, d26, d26, #3» @ A3
397 » veor» q8, q8, q0» » @ L = E + F 391 » veor» » q8, q8, q0» » @ L = E + F
398 vmull.p8 q10, d20, d6 @ J = A3*B 392 vmull.p8 q10, d20, d6 @ J = A3*B
399 » vext.8» d0, d6, d6, #3» @ B3 393 » vext.8» » d0, d6, d6, #3» @ B3
400 » veor» q9, q9, q11» » @ M = G + H 394 » veor» » q9, q9, q11» » @ M = G + H
401 vmull.p8 q0, d26, d0 @ I = A*B3 395 vmull.p8 q0, d26, d0 @ I = A*B3
402 » veor» d16, d16, d17» @ t0 = (L) (P0 + P1) << 8 396 » veor» » d16, d16, d17» @ t0 = (L) (P0 + P1) << 8
403 » vand» d17, d17, d29 397 » vand» » d17, d17, d29
404 » vext.8» d22, d6, d6, #4»@ B4 398 » vext.8» » d22, d6, d6, #4»@ B4
405 » veor» d18, d18, d19» @ t1 = (M) (P2 + P3) << 16 399 » veor» » d18, d18, d19» @ t1 = (M) (P2 + P3) << 16
406 » vand» d19, d19, d30 400 » vand» » d19, d19, d30
407 vmull.p8 q11, d26, d22 @ K = A*B4 401 vmull.p8 q11, d26, d22 @ K = A*B4
408 » veor» q10, q10, q0» » @ N = I + J 402 » veor» » q10, q10, q0» » @ N = I + J
409 » veor» d16, d16, d17 403 » veor» » d16, d16, d17
410 » veor» d18, d18, d19 404 » veor» » d18, d18, d19
411 » veor» d20, d20, d21» @ t2 = (N) (P4 + P5) << 24 405 » veor» » d20, d20, d21» @ t2 = (N) (P4 + P5) << 24
412 » vand» d21, d21, d31 406 » vand» » d21, d21, d31
413 » vext.8» q8, q8, q8, #15 407 » vext.8» » q8, q8, q8, #15
414 » veor» d22, d22, d23» @ t3 = (K) (P6 + P7) << 32 408 » veor» » d22, d22, d23» @ t3 = (K) (P6 + P7) << 32
415 vmov.i64 d23, #0 409 vmov.i64 d23, #0
416 » vext.8» q9, q9, q9, #14 410 » vext.8» » q9, q9, q9, #14
417 » veor» d20, d20, d21 411 » veor» » d20, d20, d21
418 vmull.p8 q0, d26, d6 @ D = A*B 412 vmull.p8 q0, d26, d6 @ D = A*B
419 » vext.8» q11, q11, q11, #12 413 » vext.8» » q11, q11, q11, #12
420 » vext.8» q10, q10, q10, #13 414 » vext.8» » q10, q10, q10, #13
421 » veor» q8, q8, q9 415 » veor» » q8, q8, q9
422 » veor» q10, q10, q11 416 » veor» » q10, q10, q11
423 » veor» q0, q0, q8 417 » veor» » q0, q0, q8
424 » veor» q0, q0, q10 418 » veor» » q0, q0, q10
425 » veor» d6,d6,d7» @ Karatsuba pre-processing 419 » veor» » d6,d6,d7» @ Karatsuba pre-processing
426 » vext.8» d16, d28, d28, #1» @ A1 420 » vext.8» » d16, d28, d28, #1» @ A1
427 vmull.p8 q8, d16, d6 @ F = A1*B 421 vmull.p8 q8, d16, d6 @ F = A1*B
428 » vext.8» d2, d6, d6, #1» @ B1 422 » vext.8» » d2, d6, d6, #1» @ B1
429 vmull.p8 q1, d28, d2 @ E = A*B1 423 vmull.p8 q1, d28, d2 @ E = A*B1
430 » vext.8» d18, d28, d28, #2» @ A2 424 » vext.8» » d18, d28, d28, #2» @ A2
431 vmull.p8 q9, d18, d6 @ H = A2*B 425 vmull.p8 q9, d18, d6 @ H = A2*B
432 » vext.8» d22, d6, d6, #2»@ B2 426 » vext.8» » d22, d6, d6, #2»@ B2
433 vmull.p8 q11, d28, d22 @ G = A*B2 427 vmull.p8 q11, d28, d22 @ G = A*B2
434 » vext.8» d20, d28, d28, #3» @ A3 428 » vext.8» » d20, d28, d28, #3» @ A3
435 » veor» q8, q8, q1» » @ L = E + F 429 » veor» » q8, q8, q1» » @ L = E + F
436 vmull.p8 q10, d20, d6 @ J = A3*B 430 vmull.p8 q10, d20, d6 @ J = A3*B
437 » vext.8» d2, d6, d6, #3» @ B3 431 » vext.8» » d2, d6, d6, #3» @ B3
438 » veor» q9, q9, q11» » @ M = G + H 432 » veor» » q9, q9, q11» » @ M = G + H
439 vmull.p8 q1, d28, d2 @ I = A*B3 433 vmull.p8 q1, d28, d2 @ I = A*B3
440 » veor» d16, d16, d17» @ t0 = (L) (P0 + P1) << 8 434 » veor» » d16, d16, d17» @ t0 = (L) (P0 + P1) << 8
441 » vand» d17, d17, d29 435 » vand» » d17, d17, d29
442 » vext.8» d22, d6, d6, #4»@ B4 436 » vext.8» » d22, d6, d6, #4»@ B4
443 » veor» d18, d18, d19» @ t1 = (M) (P2 + P3) << 16 437 » veor» » d18, d18, d19» @ t1 = (M) (P2 + P3) << 16
444 » vand» d19, d19, d30 438 » vand» » d19, d19, d30
445 vmull.p8 q11, d28, d22 @ K = A*B4 439 vmull.p8 q11, d28, d22 @ K = A*B4
446 » veor» q10, q10, q1» » @ N = I + J 440 » veor» » q10, q10, q1» » @ N = I + J
447 » veor» d16, d16, d17 441 » veor» » d16, d16, d17
448 » veor» d18, d18, d19 442 » veor» » d18, d18, d19
449 » veor» d20, d20, d21» @ t2 = (N) (P4 + P5) << 24 443 » veor» » d20, d20, d21» @ t2 = (N) (P4 + P5) << 24
450 » vand» d21, d21, d31 444 » vand» » d21, d21, d31
451 » vext.8» q8, q8, q8, #15 445 » vext.8» » q8, q8, q8, #15
452 » veor» d22, d22, d23» @ t3 = (K) (P6 + P7) << 32 446 » veor» » d22, d22, d23» @ t3 = (K) (P6 + P7) << 32
453 vmov.i64 d23, #0 447 vmov.i64 d23, #0
454 » vext.8» q9, q9, q9, #14 448 » vext.8» » q9, q9, q9, #14
455 » veor» d20, d20, d21 449 » veor» » d20, d20, d21
456 vmull.p8 q1, d28, d6 @ D = A*B 450 vmull.p8 q1, d28, d6 @ D = A*B
457 » vext.8» q11, q11, q11, #12 451 » vext.8» » q11, q11, q11, #12
458 » vext.8» q10, q10, q10, #13 452 » vext.8» » q10, q10, q10, #13
459 » veor» q8, q8, q9 453 » veor» » q8, q8, q9
460 » veor» q10, q10, q11 454 » veor» » q10, q10, q11
461 » veor» q1, q1, q8 455 » veor» » q1, q1, q8
462 » veor» q1, q1, q10 456 » veor» » q1, q1, q10
463 » vext.8» d16, d27, d27, #1» @ A1 457 » vext.8» » d16, d27, d27, #1» @ A1
464 vmull.p8 q8, d16, d7 @ F = A1*B 458 vmull.p8 q8, d16, d7 @ F = A1*B
465 » vext.8» d4, d7, d7, #1» @ B1 459 » vext.8» » d4, d7, d7, #1» @ B1
466 vmull.p8 q2, d27, d4 @ E = A*B1 460 vmull.p8 q2, d27, d4 @ E = A*B1
467 » vext.8» d18, d27, d27, #2» @ A2 461 » vext.8» » d18, d27, d27, #2» @ A2
468 vmull.p8 q9, d18, d7 @ H = A2*B 462 vmull.p8 q9, d18, d7 @ H = A2*B
469 » vext.8» d22, d7, d7, #2»@ B2 463 » vext.8» » d22, d7, d7, #2»@ B2
470 vmull.p8 q11, d27, d22 @ G = A*B2 464 vmull.p8 q11, d27, d22 @ G = A*B2
471 » vext.8» d20, d27, d27, #3» @ A3 465 » vext.8» » d20, d27, d27, #3» @ A3
472 » veor» q8, q8, q2» » @ L = E + F 466 » veor» » q8, q8, q2» » @ L = E + F
473 vmull.p8 q10, d20, d7 @ J = A3*B 467 vmull.p8 q10, d20, d7 @ J = A3*B
474 » vext.8» d4, d7, d7, #3» @ B3 468 » vext.8» » d4, d7, d7, #3» @ B3
475 » veor» q9, q9, q11» » @ M = G + H 469 » veor» » q9, q9, q11» » @ M = G + H
476 vmull.p8 q2, d27, d4 @ I = A*B3 470 vmull.p8 q2, d27, d4 @ I = A*B3
477 » veor» d16, d16, d17» @ t0 = (L) (P0 + P1) << 8 471 » veor» » d16, d16, d17» @ t0 = (L) (P0 + P1) << 8
478 » vand» d17, d17, d29 472 » vand» » d17, d17, d29
479 » vext.8» d22, d7, d7, #4»@ B4 473 » vext.8» » d22, d7, d7, #4»@ B4
480 » veor» d18, d18, d19» @ t1 = (M) (P2 + P3) << 16 474 » veor» » d18, d18, d19» @ t1 = (M) (P2 + P3) << 16
481 » vand» d19, d19, d30 475 » vand» » d19, d19, d30
482 vmull.p8 q11, d27, d22 @ K = A*B4 476 vmull.p8 q11, d27, d22 @ K = A*B4
483 » veor» q10, q10, q2» » @ N = I + J 477 » veor» » q10, q10, q2» » @ N = I + J
484 » veor» d16, d16, d17 478 » veor» » d16, d16, d17
485 » veor» d18, d18, d19 479 » veor» » d18, d18, d19
486 » veor» d20, d20, d21» @ t2 = (N) (P4 + P5) << 24 480 » veor» » d20, d20, d21» @ t2 = (N) (P4 + P5) << 24
487 » vand» d21, d21, d31 481 » vand» » d21, d21, d31
488 » vext.8» q8, q8, q8, #15 482 » vext.8» » q8, q8, q8, #15
489 » veor» d22, d22, d23» @ t3 = (K) (P6 + P7) << 32 483 » veor» » d22, d22, d23» @ t3 = (K) (P6 + P7) << 32
490 vmov.i64 d23, #0 484 vmov.i64 d23, #0
491 » vext.8» q9, q9, q9, #14 485 » vext.8» » q9, q9, q9, #14
492 » veor» d20, d20, d21 486 » veor» » d20, d20, d21
493 vmull.p8 q2, d27, d7 @ D = A*B 487 vmull.p8 q2, d27, d7 @ D = A*B
494 » vext.8» q11, q11, q11, #12 488 » vext.8» » q11, q11, q11, #12
495 » vext.8» q10, q10, q10, #13 489 » vext.8» » q10, q10, q10, #13
496 » veor» q8, q8, q9 490 » veor» » q8, q8, q9
497 » veor» q10, q10, q11 491 » veor» » q10, q10, q11
498 » veor» q2, q2, q8 492 » veor» » q2, q2, q8
499 » veor» q2, q2, q10 493 » veor» » q2, q2, q10
500 » veor» q1,q1,q0» » @ Karatsuba post-processing 494 » veor» » q1,q1,q0» » @ Karatsuba post-processing
501 » veor» q1,q1,q2 495 » veor» » q1,q1,q2
502 » veor» d1,d1,d2 496 » veor» » d1,d1,d2
503 » veor» d4,d4,d3» @ Xh|Xl - 256-bit result 497 » veor» » d4,d4,d3» @ Xh|Xl - 256-bit result
504 498
505 @ equivalent of reduction_avx from ghash-x86_64.pl 499 @ equivalent of reduction_avx from ghash-x86_64.pl
506 vshl.i64 q9,q0,#57 @ 1st phase 500 vshl.i64 q9,q0,#57 @ 1st phase
507 vshl.i64 q10,q0,#62 501 vshl.i64 q10,q0,#62
508 » veor» q10,q10,q9» » @ 502 » veor» » q10,q10,q9» » @
509 vshl.i64 q9,q0,#63 503 vshl.i64 q9,q0,#63
510 » veor» q10, q10, q9» » @ 504 » veor» » q10, q10, q9» » @
511 » veor» d1,d1,d20» @ 505 » veor» » d1,d1,d20» @
512 » veor» d4,d4,d21 506 » veor» » d4,d4,d21
513 507
514 vshr.u64 q10,q0,#1 @ 2nd phase 508 vshr.u64 q10,q0,#1 @ 2nd phase
515 » veor» q2,q2,q0 509 » veor» » q2,q2,q0
516 » veor» q0,q0,q10» » @ 510 » veor» » q0,q0,q10» » @
517 vshr.u64 q10,q10,#6 511 vshr.u64 q10,q10,#6
518 vshr.u64 q0,q0,#1 @ 512 vshr.u64 q0,q0,#1 @
519 » veor» q0,q0,q2» » @ 513 » veor» » q0,q0,q2» » @
520 » veor» q0,q0,q10» » @ 514 » veor» » q0,q0,q10» » @
521 515
522 » subs» r3,#16 516 » subs» » r3,#16
523 » bne» .Loop_neon 517 » bne» » .Loop_neon
524 518
525 #ifdef __ARMEL__ 519 #ifdef __ARMEL__
526 vrev64.8 q0,q0 520 vrev64.8 q0,q0
527 #endif 521 #endif
528 » sub» r0,#16 522 » sub» » r0,#16»
529 » vst1.64»d1,[r0]!» » @ write out Xi 523 » vst1.64»» d1,[r0,:64]!» @ write out Xi
530 » vst1.64»d0,[r0] 524 » vst1.64»» d0,[r0,:64]
531 525
532 » bx» lr» » » » » @ bx lr 526 » .word» 0xe12fff1e
533 .size gcm_ghash_neon,.-gcm_ghash_neon 527 .size gcm_ghash_neon,.-gcm_ghash_neon
534 #endif 528 #endif
535 .byte» 71,72,65,83,72,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67 ,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,11 0,115,115,108,46,111,114,103,62,0 529 .asciz "GHASH for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org>"
536 .align» 2 530 .align 2
537 .align» 2 531
538 532 #endif
539 #endif
OLDNEW
« no previous file with comments | « third_party/boringssl/linux-arm/crypto/bn/armv4-mont.S ('k') | third_party/boringssl/linux-arm/crypto/sha/sha1-armv4-large.S » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698