Lines Matching +full:c +full:- +full:22

2 # Implement fast SHA-256 with AVX2 instructions. (x86_64)
4 # Copyright (C) 2013 Intel Corporation.
9 # Tim Chen <tim.c.chen@linux.intel.com>
21 # - Redistributions of source code must retain the above
25 # - Redistributions in binary form must reproduce the above
41 # This code is described in an Intel White-Paper:
42 # "Fast SHA-256 Implementations on Intel Architecture Processors"
59 # Add reg to mem using reg-mem add and store
86 SHUF_00BA = %ymm10 # shuffle xBxA -> 00BA
87 SHUF_DC00 = %ymm12 # shuffle xDxC -> DC00
95 c = %ecx define
147 d = c
148 c = b define
160 addl \disp(%rsp, SRND), h # h = k + w + h # --
161 or c, y3 # y3 = a|c # MAJA
162 vpalignr $4, X2, X3, XTMP0 # XTMP0 = W[-7]
168 vpaddd X0, XTMP0, XTMP0 # XTMP0 = W[-7] + W[-16]# y1 = (e >> 6)# S1
173 rorx $22, a, y1 # y1 = a >> 22 # S0A
174 add h, d # d = k + w + h + d # --
176 and b, y3 # y3 = (a|c)&b # MAJA
177 vpalignr $4, X0, X1, XTMP1 # XTMP1 = W[-15]
178 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
183 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
185 and c, T1 # T1 = a&c # MAJB
187 add y0, y2 # y2 = S1 + CH # --
188 vpslld $(32-7), XTMP1, XTMP3
189 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
190 add y1, h # h = k + w + h + S0 # --
192 add y2, d # d = k + w + h + d + S1 + CH = d + t1 # --
193 vpor XTMP2, XTMP3, XTMP3 # XTMP3 = W[-15] ror 7
196 add y2, h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
197 add y3, h # h = t1 + S0 + MAJ # --
208 addl offset(%rsp, SRND), h # h = k + w + h # --
209 or c, y3 # y3 = a|c # MAJA
212 vpsrld $3, XTMP1, XTMP4 # XTMP4 = W[-15] >> 3
221 rorx $22, a, y1 # y1 = a >> 22 # S0A
223 add h, d # d = k + w + h + d # --
225 vpslld $(32-18), XTMP1, XTMP1
226 and b, y3 # y3 = (a|c)&b # MAJA
227 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
233 vpxor XTMP2, XTMP3, XTMP3 # XTMP3 = W[-15] ror 7 ^ W[-15] ror 18
234 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
236 and c, T1 # T1 = a&c # MAJB
237 add y0, y2 # y2 = S1 + CH # --
240 vpshufd $0b11111010, X3, XTMP2 # XTMP2 = W[-2] {BBAA}
241 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
242 add y1, h # h = k + w + h + S0 # --
244 vpaddd XTMP1, XTMP0, XTMP0 # XTMP0 = W[-16] + W[-7] + s0
245 add y2, d # d = k + w + h + d + S1 + CH = d + t1 # --
246 add y2, h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
247 add y3, h # h = t1 + S0 + MAJ # --
249 vpsrld $10, XTMP2, XTMP4 # XTMP4 = W[-2] >> 10 {BBAA}
259 addl offset(%rsp, SRND), h # h = k + w + h # --
261 vpsrlq $19, XTMP2, XTMP3 # XTMP3 = W[-2] ror 19 {xBxA}
263 or c, y3 # y3 = a|c # MAJA
269 vpsrlq $17, XTMP2, XTMP2 # XTMP2 = W[-2] ror 17 {xBxA}
274 add h, d # d = k + w + h + d # --
275 and b, y3 # y3 = (a|c)&b # MAJA
278 rorx $22, a, y1 # y1 = a >> 22 # S0A
283 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
287 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
289 and c, T1 # T1 = a&c # MAJB
290 add y0, y2 # y2 = S1 + CH # --
291 vpshufd $0b01010000, XTMP0, XTMP2 # XTMP2 = W[-2] {DDCC}
293 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
294 add y1,h # h = k + w + h + S0 # --
295 add y2,d # d = k + w + h + d + S1 + CH = d + t1 # --
296 add y2,h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
298 add y3,h # h = t1 + S0 + MAJ # --
309 addl offset(%rsp, SRND), h # h = k + w + h # --
310 or c, y3 # y3 = a|c # MAJA
313 vpsrld $10, XTMP2, XTMP5 # XTMP5 = W[-2] >> 10 {DDCC}
320 vpsrlq $19, XTMP2, XTMP3 # XTMP3 = W[-2] ror 19 {xDxC}
323 add h, d # d = k + w + h + d # --
324 and b, y3 # y3 = (a|c)&b # MAJA
326 vpsrlq $17, XTMP2, XTMP2 # XTMP2 = W[-2] ror 17 {xDxC}
331 rorx $22, a, y1 # y1 = a >> 22 # S0A
332 add y0, y2 # y2 = S1 + CH # --
335 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
336 add y2, d # d = k + w + h + d + S1 + CH = d + t1 # --
342 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
344 and c, T1 # T1 = a&c # MAJB
345 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
347 add y1, h # h = k + w + h + S0 # --
348 add y2, h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
349 add y3, h # h = t1 + S0 + MAJ # --
370 rorx $22, a, y1 # y1 = a >> 22 # S0A
373 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
375 addl \disp(%rsp, SRND), h # h = k + w + h # --
376 or c, y3 # y3 = a|c # MAJA
378 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
380 and b, y3 # y3 = (a|c)&b # MAJA
381 and c, T1 # T1 = a&c # MAJB
382 add y0, y2 # y2 = S1 + CH # --
385 add h, d # d = k + w + h + d # --
386 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
387 add y1, h # h = k + w + h + S0 # --
388 add y2, d # d = k + w + h + d + S1 + CH = d + t1 # --
394 add y2, old_h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
403 add y3, old_h # h = t1 + S0 + MAJ # --
408 rorx $22, a, y1 # y1 = a >> 22 # S0A
411 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
414 addl offset(%rsp, SRND), h # h = k + w + h # --
415 or c, y3 # y3 = a|c # MAJA
417 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
419 and b, y3 # y3 = (a|c)&b # MAJA
420 and c, T1 # T1 = a&c # MAJB
421 add y0, y2 # y2 = S1 + CH # --
424 add h, d # d = k + w + h + d # --
425 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
426 add y1, h # h = k + w + h + S0 # --
428 add y2, d # d = k + w + h + d + S1 + CH = d + t1 # --
434 add y2, old_h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
443 add y3, old_h # h = t1 + S0 + MAJ # --
448 rorx $22, a, y1 # y1 = a >> 22 # S0A
451 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
454 addl offset(%rsp, SRND), h # h = k + w + h # --
455 or c, y3 # y3 = a|c # MAJA
457 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
459 and b, y3 # y3 = (a|c)&b # MAJA
460 and c, T1 # T1 = a&c # MAJB
461 add y0, y2 # y2 = S1 + CH # --
464 add h, d # d = k + w + h + d # --
465 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
466 add y1, h # h = k + w + h + S0 # --
468 add y2, d # d = k + w + h + d + S1 + CH = d + t1 # --
474 add y2, old_h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
483 add y3, old_h # h = t1 + S0 + MAJ # --
488 rorx $22, a, y1 # y1 = a >> 22 # S0A
491 xor T1, y1 # y1 = (a>>22) ^ (a>>13) # S0
494 addl offset(%rsp, SRND), h # h = k + w + h # --
495 or c, y3 # y3 = a|c # MAJA
497 xor T1, y1 # y1 = (a>>22) ^ (a>>13) ^ (a>>2) # S0
499 and b, y3 # y3 = (a|c)&b # MAJA
500 and c, T1 # T1 = a&c # MAJB
501 add y0, y2 # y2 = S1 + CH # --
504 add h, d # d = k + w + h + d # --
505 or T1, y3 # y3 = MAJ = (a|c)&b)|(a&c) # MAJ
506 add y1, h # h = k + w + h + S0 # --
508 add y2, d # d = k + w + h + d + S1 + CH = d + t1 # --
511 add y2, h # h = k + w + h + S0 + S1 + CH = t1 + S0# --
513 add y3, h # h = t1 + S0 + MAJ # --
535 and $-32, %rsp # align rsp to 32 byte boundary
538 lea -64(INP, NUM_BLKS), NUM_BLKS # pointer to last block
547 mov 4*2(CTX), c
636 addm (4*2)(CTX),c
662 addm (4*2)(CTX),c
691 mov (4*2)(CTX),c
760 # shuffle xBxA -> 00BA
766 # shuffle xDxC -> DC00