2 * Author......: Jens Steube <jens.steube@gmail.com>
11 static inline u32
swap32 (const u32 v
)
13 return (as_uint (as_uchar4 (v
).s3210
));
16 static inline u64
swap64 (const u64 v
)
18 return (as_ulong (as_uchar8 (v
).s76543210
));
22 static inline u32
__bfe (const u32 a
, const u32 b
, const u32 c
)
24 return amd_bfe (a
, b
, c
);
29 static inline u32
__byte_perm (const u32 a
, const u32 b
, const u32 c
)
33 asm ("prmt.b32 %0, %1, %2, %3;" : "=r"(r
) : "r"(a
), "r"(b
), "r"(c
));
38 static inline u32
__bfe (const u32 a
, const u32 b
, const u32 c
)
42 asm ("bfe.u32 %0, %1, %2, %3;" : "=r"(r
) : "r"(a
), "r"(b
), "r"(c
));
49 static inline u32
amd_bytealign (const u32 a
, const u32 b
, const u32 c
)
53 asm ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(r
) : "r"(b
), "r"(a
), "r"((c
& 3) * 8));
60 static inline u32
amd_bytealign (const u32 a
, const u32 b
, const u32 c
)
62 return __byte_perm (b
, a
, (0x76543210 >> ((c
& 3) * 4)) & 0xffff);
67 static inline u32
lut3_2d (const u32 a
, const u32 b
, const u32 c
)
71 asm ("lop3.b32 %0, %1, %2, %3, 0x2d;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
76 static inline u32
lut3_39 (const u32 a
, const u32 b
, const u32 c
)
80 asm ("lop3.b32 %0, %1, %2, %3, 0x39;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
85 static inline u32
lut3_59 (const u32 a
, const u32 b
, const u32 c
)
89 asm ("lop3.b32 %0, %1, %2, %3, 0x59;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
94 static inline u32
lut3_96 (const u32 a
, const u32 b
, const u32 c
)
98 asm ("lop3.b32 %0, %1, %2, %3, 0x96;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
103 static inline u32
lut3_e4 (const u32 a
, const u32 b
, const u32 c
)
107 asm ("lop3.b32 %0, %1, %2, %3, 0xe4;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
112 static inline u32
lut3_e8 (const u32 a
, const u32 b
, const u32 c
)
116 asm ("lop3.b32 %0, %1, %2, %3, 0xe8;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
121 static inline u32
lut3_ca (const u32 a
, const u32 b
, const u32 c
)
125 asm ("lop3.b32 %0, %1, %2, %3, 0xca;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
135 static u32 allx (const u32 r)
141 static inline u32
l32_from_64 (u64 a
)
143 const u32 r
= (uint
) (a
);
148 static inline u32
h32_from_64 (u64 a
)
152 const u32 r
= (uint
) (a
);
157 static inline u64
hl32_to_64 (const u32 a
, const u32 b
)
159 return as_ulong ((uint2
) (b
, a
));
164 static inline u32
rotr32 (const u32 a
, const u32 n
)
166 return rotate (a
, 32 - n
);
169 static inline u32
rotl32 (const u32 a
, const u32 n
)
171 return rotate (a
, n
);
174 static inline u64
rotr64 (const u64 a
, const u32 n
)
176 uint2 a2
= as_uint2 (a
);
180 t
.s0
= (n
>= 32) ? amd_bitalign (a2
.s0
, a2
.s1
, n
- 32)
181 : amd_bitalign (a2
.s1
, a2
.s0
, n
);
182 t
.s1
= (n
>= 32) ? amd_bitalign (a2
.s1
, a2
.s0
, n
- 32)
183 : amd_bitalign (a2
.s0
, a2
.s1
, n
);
188 static inline u64
rotl64 (const u64 a
, const u32 n
)
190 return rotr64 (a
, 64 - n
);
199 static inline u32
rotr32 (const u32 a
, const u32 n
)
203 asm ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(r
) : "r"(a
), "r"(a
), "r"(n
));
208 static inline u32
rotl32 (const u32 a
, const u32 n
)
210 return rotr32 (a
, 32 - n
);
213 static inline u64
rotr64 (const u64 a
, const u32 n
)
218 asm ("mov.b64 {%0, %1}, %2;" : "=r"(il
), "=r"(ir
) : "l"(a
));
225 asm ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(tl
) : "r"(ir
), "r"(il
), "r"(n
- 32));
226 asm ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(tr
) : "r"(il
), "r"(ir
), "r"(n
- 32));
230 asm ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(tl
) : "r"(il
), "r"(ir
), "r"(n
));
231 asm ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(tr
) : "r"(ir
), "r"(il
), "r"(n
));
236 asm ("mov.b64 %0, {%1, %2};" : "=l"(r
) : "r"(tl
), "r"(tr
));
241 static inline u64
rotl64 (const u64 a
, const u32 n
)
243 return rotr64 (a
, 64 - n
);
248 static inline u32
rotr32 (const u32 a
, const u32 n
)
250 return rotate (a
, 32 - n
);
253 static inline u32
rotl32 (const u32 a
, const u32 n
)
255 return rotate (a
, n
);
258 static inline u64
rotr64 (const u64 a
, const u64 n
)
260 return rotate (a
, 64 - n
);
263 static inline u64
rotl64 (const u64 a
, const u64 n
)
265 return rotate (a
, n
);
283 #elif defined _BCRYPT_
285 #elif defined _SHA256_
287 #elif defined _SHA384_
289 #elif defined _SHA512_
291 #elif defined _KECCAK_
293 #elif defined _RIPEMD160_
295 #elif defined _WHIRLPOOL_
299 #elif defined _GOST2012_256_
301 #elif defined _GOST2012_512_
307 #elif defined _MYSQL323_
309 #elif defined _LOTUS5_
311 #elif defined _LOTUS6_
313 #elif defined _SCRYPT_
315 #elif defined _LOTUS8_
317 #elif defined _OFFICE2007_
319 #elif defined _OFFICE2010_
321 #elif defined _OFFICE2013_
323 #elif defined _OLDOFFICE01_
325 #elif defined _OLDOFFICE34_
327 #elif defined _SIPHASH_
329 #elif defined _PBKDF2_MD5_
331 #elif defined _PBKDF2_SHA1_
333 #elif defined _PBKDF2_SHA256_
335 #elif defined _PBKDF2_SHA512_
337 #elif defined _PDF17L8_
339 #elif defined _CRC32_
341 #elif defined _SEVEN_ZIP_
343 #elif defined _ANDROIDFDE_
349 #elif defined _MD5_SHA1_
351 #elif defined _SHA1_MD5_
353 #elif defined _NETNTLMV2_
355 #elif defined _KRB5PA_
357 #elif defined _CLOUDKEY_
359 #elif defined _SCRYPT_
361 #elif defined _PSAFE2_
363 #elif defined _LOTUS8_
367 #elif defined _SHA256_SHA1_
369 #elif defined _MS_DRSR_
432 u32 cry_master_buf
[64];
434 u32 public_key_buf
[64];
475 u32 userdomain_buf
[64];
538 u32 encryptedVerifier
[4];
539 u32 encryptedVerifierHash
[5];
547 u32 encryptedVerifier
[4];
548 u32 encryptedVerifierHash
[8];
554 u32 encryptedVerifier
[4];
555 u32 encryptedVerifierHash
[8];
562 u32 encryptedVerifier
[4];
563 u32 encryptedVerifierHash
[4];
571 u32 encryptedVerifier
[4];
572 u32 encryptedVerifierHash
[5];
641 } bitcoin_wallet_tmp_t
;
749 } pbkdf2_sha256_tmp_t
;
759 } pbkdf2_sha512_tmp_t
;
971 u32 alignment_placeholder_1
;
972 u32 alignment_placeholder_2
;
973 u32 alignment_placeholder_3
;