| 1183 | |
| 1184 | AS2( mov eax, esp) |
| 1185 | AS2( and esp, 0xfffffff0) |
| 1186 | AS2( sub esp, 27*16) // 17*16 for expanded data, 20*8 for state |
| 1187 | AS_PUSH_IF86( ax) |
| 1188 | AS2( xor eax, eax) |
| 1189 | |
| 1190 | #if CRYPTOPP_BOOL_X32 |
| 1191 | AS2( lea edi, [esp+8+8*8]) // start at middle of state buffer. will decrement pointer each round to avoid copying |
| 1192 | AS2( lea esi, [esp+8+20*8+8]) // 16-byte alignment, then add 8 |
| 1193 | #else |
| 1194 | AS2( lea edi, [esp+4+8*8]) // start at middle of state buffer. will decrement pointer each round to avoid copying |
| 1195 | AS2( lea esi, [esp+4+20*8+8]) // 16-byte alignment, then add 8 |
| 1196 | #endif |
| 1197 | |
| 1198 | AS2( movdqa xmm0, [ecx+0*16]) |
| 1199 | AS2( movdq2q mm4, xmm0) |
| 1200 | AS2( movdqa [edi+0*16], xmm0) |
| 1201 | AS2( movdqa xmm0, [ecx+1*16]) |
| 1202 | AS2( movdqa [edi+1*16], xmm0) |
| 1203 | AS2( movdqa xmm0, [ecx+2*16]) |
| 1204 | AS2( movdq2q mm5, xmm0) |
| 1205 | AS2( movdqa [edi+2*16], xmm0) |
| 1206 | AS2( movdqa xmm0, [ecx+3*16]) |
| 1207 | AS2( movdqa [edi+3*16], xmm0) |
| 1208 | ASJ( jmp, 0, f) |
| 1209 | |
| 1210 | #define SSE2_S0_S1(r, a, b, c) \ |
| 1211 | AS2( movq mm6, r)\ |
| 1212 | AS2( psrlq r, a)\ |
| 1213 | AS2( movq mm7, r)\ |
| 1214 | AS2( psllq mm6, 64-c)\ |
| 1215 | AS2( pxor mm7, mm6)\ |
| 1216 | AS2( psrlq r, b-a)\ |
| 1217 | AS2( pxor mm7, r)\ |
| 1218 | AS2( psllq mm6, c-b)\ |
| 1219 | AS2( pxor mm7, mm6)\ |
| 1220 | AS2( psrlq r, c-b)\ |
| 1221 | AS2( pxor r, mm7)\ |
| 1222 | AS2( psllq mm6, b-a)\ |
| 1223 | AS2( pxor r, mm6) |
| 1224 | |
| 1225 | #define SSE2_s0(r, a, b, c) \ |
| 1226 | AS2( movdqa xmm6, r)\ |
| 1227 | AS2( psrlq r, a)\ |
| 1228 | AS2( movdqa xmm7, r)\ |
| 1229 | AS2( psllq xmm6, 64-c)\ |
| 1230 | AS2( pxor xmm7, xmm6)\ |
| 1231 | AS2( psrlq r, b-a)\ |
| 1232 | AS2( pxor xmm7, r)\ |
| 1233 | AS2( psrlq r, c-b)\ |
| 1234 | AS2( pxor r, xmm7)\ |
| 1235 | AS2( psllq xmm6, c-a)\ |
| 1236 | AS2( pxor r, xmm6) |
| 1237 | |
| 1238 | #define SSE2_s1(r, a, b, c) \ |
| 1239 | AS2( movdqa xmm6, r)\ |
| 1240 | AS2( psrlq r, a)\ |
| 1241 | AS2( movdqa xmm7, r)\ |
| 1242 | AS2( psllq xmm6, 64-c)\ |
no test coverage detected