Lines Matching +full:3 +full:a
3 * This is a SIMD SHA-1 implementation. It requires the Intel(R) Supplemental
61 /* we keep window of 64 w[i]+K pre-calculated values in a circular buffer */
113 mov (HASH_PTR), A
127 RR F1,A,B,C,D,E,0
128 RR F1,D,E,A,B,C,2
129 RR F1,B,C,D,E,A,4
130 RR F1,E,A,B,C,D,6
131 RR F1,C,D,E,A,B,8
133 RR F1,A,B,C,D,E,10
134 RR F1,D,E,A,B,C,12
135 RR F1,B,C,D,E,A,14
136 RR F1,E,A,B,C,D,16
137 RR F1,C,D,E,A,B,18
139 RR F2,A,B,C,D,E,20
140 RR F2,D,E,A,B,C,22
141 RR F2,B,C,D,E,A,24
142 RR F2,E,A,B,C,D,26
143 RR F2,C,D,E,A,B,28
145 RR F2,A,B,C,D,E,30
146 RR F2,D,E,A,B,C,32
147 RR F2,B,C,D,E,A,34
148 RR F2,E,A,B,C,D,36
149 RR F2,C,D,E,A,B,38
151 RR F3,A,B,C,D,E,40
152 RR F3,D,E,A,B,C,42
153 RR F3,B,C,D,E,A,44
154 RR F3,E,A,B,C,D,46
155 RR F3,C,D,E,A,B,48
157 RR F3,A,B,C,D,E,50
158 RR F3,D,E,A,B,C,52
159 RR F3,B,C,D,E,A,54
160 RR F3,E,A,B,C,D,56
161 RR F3,C,D,E,A,B,58
167 RR F4,A,B,C,D,E,60
168 RR F4,D,E,A,B,C,62
169 RR F4,B,C,D,E,A,64
170 RR F4,E,A,B,C,D,66
171 RR F4,C,D,E,A,B,68
173 RR F4,A,B,C,D,E,70
174 RR F4,D,E,A,B,C,72
175 RR F4,B,C,D,E,A,74
176 RR F4,E,A,B,C,D,76
177 RR F4,C,D,E,A,B,78
179 UPDATE_HASH (HASH_PTR), A
191 .set A, REG_A define
204 mov A, REG_A
208 .macro SWAP_REG_NAMES a, b
209 .set _T, \a
210 .set \a, \b
252 * t1 = F(a, b, c);
253 * d += t1; a <<= 5;
254 * e += a;
255 * t1 = e; a >>= 7;
259 .macro RR F, a, b, c, d, e, round
267 \F \a, \b, \c
269 rol $5, \a
270 add \a, \e
272 ror $7, \a # (a <<r 5) >>r 7) => a <<r 30)
280 # write: \a, \b
281 # rotate: \a<=\d, \b<=\e, \c<=\a, \d<=\b, \e<=\c
348 .if ((i & 3) == 0)
350 .elseif ((i & 3) == 1)
353 .elseif ((i & 3) == 2)
355 .elseif ((i & 3) == 3)
356 movdqa W_TMP1, WK(i&~3)
367 * some "heavy-lifting" vectorization for rounds 16-31 due to w[i]->w[i-3]
373 .if ((i & 3) == 0)
377 psrldq $4, W_TMP1 # w[i-3]
379 .elseif ((i & 3) == 1)
385 .elseif ((i & 3) == 2)
392 .elseif ((i & 3) == 3)
397 movdqa W_TMP1, WK(i&~3)
404 * in SHA-1 specification: w[i] = (w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16]) rol 1
406 * allows more efficient vectorization since w[i]=>w[i-3] dependency is broken
409 .if ((i & 3) == 0)
413 .elseif ((i & 3) == 1)
417 .elseif ((i & 3) == 2)
421 .elseif ((i & 3) == 3)
424 movdqa W_TMP1, WK(i&~3)
456 .macro xmm_mov a, b
457 movdqu \a,\b
484 .if ((i & 3) == 0)
486 .elseif ((i & 3) == 1)
488 .elseif ((i & 3) == 2)
490 .elseif ((i & 3) == 3)
491 vmovdqa W_TMP1, WK(i&~3)
497 .if ((i & 3) == 0)
499 vpsrldq $4, W_minus_04, W_TMP1 # w[i-3]
502 .elseif ((i & 3) == 1)
506 .elseif ((i & 3) == 2)
511 .elseif ((i & 3) == 3)
515 vmovdqu W_TMP1, WK(i&~3)
521 .if ((i & 3) == 0)
524 .elseif ((i & 3) == 1)
527 .elseif ((i & 3) == 2)
531 .elseif ((i & 3) == 3)
533 vmovdqu W_TMP1, WK(i&~3)
542 .macro xmm_mov a, b
543 vmovdqu \a,\b