sha1-armv4-large.pl: add performance data for Cortex A8 core.
[openssl.git] / crypto / sha / asm / sha1-s390x.pl
index e22e86fa1400d5afcc4dc3698e6d71a59ad3549d..659afffc08da462232ae675129419d6e91ff6ae5 100644 (file)
@@ -23,7 +23,7 @@
 
 $kimdfunc=1;   # magic function code for kimd instruction
 
-$output=shift;
+while (($output=shift) && ($output!~/^\w[\w\-]*\.\w+$/)) {}
 open STDOUT,">$output";
 
 $K_00_39="%r0"; $K=$K_00_39;
@@ -143,6 +143,10 @@ Ktable: .long      0x5a827999,0x6ed9eba1,0x8f1bbcdc,0xca62c1d6
 sha1_block_data_order:
 ___
 $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
@@ -156,6 +160,7 @@ $code.=<<___ if ($kimdfunc);
        .long   0xb93e0002      # kimd %r0,%r2
        brc     1,.-4           # pay attention to "partial completion"
        br      %r14
+.align 16
 .Lsoftware:
 ___
 $code.=<<___;
@@ -212,6 +217,7 @@ $code.=<<___;
        br      %r14
 .size  sha1_block_data_order,.-sha1_block_data_order
 .string        "SHA1 block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>"
+.comm  OPENSSL_s390xcap_P,8,8
 ___
 
 $code =~ s/\`([^\`]*)\`/eval $1/gem;