summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/sha/asm/sha1-586.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/sha/asm/sha1-586.pl')
-rw-r--r--src/lib/libcrypto/sha/asm/sha1-586.pl26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/lib/libcrypto/sha/asm/sha1-586.pl b/src/lib/libcrypto/sha/asm/sha1-586.pl
index 1de5e2650e..5928e083c1 100644
--- a/src/lib/libcrypto/sha/asm/sha1-586.pl
+++ b/src/lib/libcrypto/sha/asm/sha1-586.pl
@@ -295,11 +295,9 @@ if ($xmm) {
295 &static_label("avx_shortcut") if ($ymm); 295 &static_label("avx_shortcut") if ($ymm);
296 &static_label("K_XX_XX"); 296 &static_label("K_XX_XX");
297 297
298 &call (&label("pic_point")); # make it PIC! 298 &picsetup($tmp1);
299 &set_label("pic_point"); 299 &picsymbol($T, "OPENSSL_ia32cap_P", $tmp1);
300 &blindpop($tmp1); 300 &picsymbol($tmp1, &label("K_XX_XX"), $tmp1);
301 &picmeup($T,"OPENSSL_ia32cap_P",$tmp1,&label("pic_point"));
302 &lea ($tmp1,&DWP(&label("K_XX_XX")."-".&label("pic_point"),$tmp1));
303 301
304 &mov ($A,&DWP(0,$T)); 302 &mov ($A,&DWP(0,$T));
305 &mov ($D,&DWP(4,$T)); 303 &mov ($D,&DWP(4,$T));
@@ -419,10 +417,9 @@ my $_rol=sub { &rol(@_) };
419my $_ror=sub { &ror(@_) }; 417my $_ror=sub { &ror(@_) };
420 418
421&function_begin("_sha1_block_data_order_ssse3"); 419&function_begin("_sha1_block_data_order_ssse3");
422 &call (&label("pic_point")); # make it PIC! 420 &picsetup($tmp1);
423 &set_label("pic_point"); 421 &picsymbol($tmp1, &label("K_XX_XX"), $tmp1);
424 &blindpop($tmp1); 422
425 &lea ($tmp1,&DWP(&label("K_XX_XX")."-".&label("pic_point"),$tmp1));
426&set_label("ssse3_shortcut"); 423&set_label("ssse3_shortcut");
427 424
428 &movdqa (@X[3],&QWP(0,$tmp1)); # K_00_19 425 &movdqa (@X[3],&QWP(0,$tmp1)); # K_00_19
@@ -861,10 +858,9 @@ my $_rol=sub { &shld(@_[0],@_) };
861my $_ror=sub { &shrd(@_[0],@_) }; 858my $_ror=sub { &shrd(@_[0],@_) };
862 859
863&function_begin("_sha1_block_data_order_avx"); 860&function_begin("_sha1_block_data_order_avx");
864 &call (&label("pic_point")); # make it PIC! 861 &picsetup($tmp1);
865 &set_label("pic_point"); 862 &picsymbol($tmp1, &label("K_XX_XX"), $tmp1);
866 &blindpop($tmp1); 863
867 &lea ($tmp1,&DWP(&label("K_XX_XX")."-".&label("pic_point"),$tmp1));
868&set_label("avx_shortcut"); 864&set_label("avx_shortcut");
869 &vzeroall(); 865 &vzeroall();
870 866
@@ -1213,13 +1209,15 @@ sub Xtail_avx()
1213 &mov (&DWP(16,@T[1]),$E); 1209 &mov (&DWP(16,@T[1]),$E);
1214&function_end("_sha1_block_data_order_avx"); 1210&function_end("_sha1_block_data_order_avx");
1215} 1211}
1212
1213 &rodataseg();
1216&set_label("K_XX_XX",64); 1214&set_label("K_XX_XX",64);
1217&data_word(0x5a827999,0x5a827999,0x5a827999,0x5a827999); # K_00_19 1215&data_word(0x5a827999,0x5a827999,0x5a827999,0x5a827999); # K_00_19
1218&data_word(0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1); # K_20_39 1216&data_word(0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1); # K_20_39
1219&data_word(0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc); # K_40_59 1217&data_word(0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc); # K_40_59
1220&data_word(0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6); # K_60_79 1218&data_word(0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6); # K_60_79
1221&data_word(0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f); # pbswap mask 1219&data_word(0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f); # pbswap mask
1220 &previous();
1222} 1221}
1223&asciz("SHA1 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>");
1224 1222
1225&asm_finish(); 1223&asm_finish();