s390x assembler pack: extend OPENSSL_s390xcap_P to 128 bits.
[openssl.git] / crypto / sha / asm / sha512-s390x.pl
index 5811d74d094f5abcde722da00151c395fa40802c..3a358a486092a6d43a3d9491cdb7313f413f436a 100644 (file)
@@ -44,7 +44,7 @@ $tbl="%r13";
 $T1="%r14";
 $sp="%r15";
 
-$output=shift;
+while (($output=shift) && ($output!~/^\w[\w\-]*\.\w+$/)) {}
 open STDOUT,">$output";
 
 if ($output =~ /512/) {
@@ -214,6 +214,10 @@ $code.=<<___;
 $Func:
 ___
 $code.=<<___ if ($kimdfunc);
+       larl    %r1,OPENSSL_s390xcap_P
+       lg      %r0,0(%r1)
+       tmhl    %r0,0x4000      # check for message-security assist
+       jz      .Lsoftware
        lghi    %r0,0
        la      %r1,16($sp)
        .long   0xb93e0002      # kimd %r0,%r2
@@ -286,6 +290,7 @@ $code.=<<___;
        br      %r14
 .size  $Func,.-$Func
 .string        "SHA${label} block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>"
+.comm  OPENSSL_s390xcap_P,16,8
 ___
 
 $code =~ s/\`([^\`]*)\`/eval $1/gem;