~ubuntu-branches/ubuntu/wily/openssl/wily

« back to all changes in this revision

Viewing changes to crypto/aes/asm/aes-ppc.pl

  • Committer: Package Import Robot
  • Author(s): Colin Watson
  • Date: 2014-09-26 11:32:32 UTC
  • Revision ID: package-import@ubuntu.com-20140926113232-ds6gavd9wl43wft5
Tags: 1.0.1f-1ubuntu8
Backport collected POWER8 optimisations from upstream (LP: #1290579).

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
        $PUSH   ="stw";
46
46
} else { die "nonsense $flavour"; }
47
47
 
48
 
$LITTLE_ENDIAN=0;
49
 
if ($flavour =~ /le$/) {
50
 
        die "little-endian is 64-bit only: $flavour" if ($SIZE_T == 4);
51
 
        $LITTLE_ENDIAN=1;
52
 
}
 
48
$LITTLE_ENDIAN = ($flavour=~/le$/) ? $SIZE_T : 0;
53
49
 
54
50
$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
55
51
( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
74
70
$Tbl0="r3";
75
71
$Tbl1="r6";
76
72
$Tbl2="r7";
77
 
$Tbl3="r2";
 
73
$Tbl3=$out;     # stay away from "r2"; $out is offloaded to stack
78
74
 
79
75
$s0="r8";
80
76
$s1="r9";
82
78
$s3="r11";
83
79
 
84
80
$t0="r12";
85
 
$t1="r13";
 
81
$t1="r0";       # stay away from "r13";
86
82
$t2="r14";
87
83
$t3="r15";
88
84
 
106
102
$acc14="r30";
107
103
$acc15="r31";
108
104
 
109
 
# stay away from TLS pointer
110
 
if ($SIZE_T==8) { die if ($t1 ne "r13");  $t1="r0";             }
111
 
else            { die if ($Tbl3 ne "r2"); $Tbl3=$t0; $t0="r0";  }
112
105
$mask80=$Tbl2;
113
106
$mask1b=$Tbl3;
114
107
 
343
336
        $STU    $sp,-$FRAME($sp)
344
337
        mflr    r0
345
338
 
346
 
        $PUSH   $toc,`$FRAME-$SIZE_T*20`($sp)
347
 
        $PUSH   r13,`$FRAME-$SIZE_T*19`($sp)
 
339
        $PUSH   $out,`$FRAME-$SIZE_T*19`($sp)
348
340
        $PUSH   r14,`$FRAME-$SIZE_T*18`($sp)
349
341
        $PUSH   r15,`$FRAME-$SIZE_T*17`($sp)
350
342
        $PUSH   r16,`$FRAME-$SIZE_T*16`($sp)
399
391
$code.=<<___;
400
392
        bl      LAES_Te
401
393
        bl      Lppc_AES_encrypt_compact
 
394
        $POP    $out,`$FRAME-$SIZE_T*19`($sp)
402
395
___
403
396
$code.=<<___ if ($LITTLE_ENDIAN);
404
397
        rotlwi  $t0,$s0,8
467
460
 
468
461
        bl      LAES_Te
469
462
        bl      Lppc_AES_encrypt_compact
 
463
        $POP    $out,`$FRAME-$SIZE_T*19`($sp)
470
464
 
471
465
        extrwi  $acc00,$s0,8,0
472
466
        extrwi  $acc01,$s0,8,8
499
493
 
500
494
Lenc_done:
501
495
        $POP    r0,`$FRAME+$LRSAVE`($sp)
502
 
        $POP    $toc,`$FRAME-$SIZE_T*20`($sp)
503
 
        $POP    r13,`$FRAME-$SIZE_T*19`($sp)
504
496
        $POP    r14,`$FRAME-$SIZE_T*18`($sp)
505
497
        $POP    r15,`$FRAME-$SIZE_T*17`($sp)
506
498
        $POP    r16,`$FRAME-$SIZE_T*16`($sp)
814
806
        blr
815
807
        .long   0
816
808
        .byte   0,12,0x14,0,0,0,0,0
 
809
.size   .AES_encrypt,.-.AES_encrypt
817
810
 
818
811
.globl  .AES_decrypt
819
812
.align  7
821
814
        $STU    $sp,-$FRAME($sp)
822
815
        mflr    r0
823
816
 
824
 
        $PUSH   $toc,`$FRAME-$SIZE_T*20`($sp)
825
 
        $PUSH   r13,`$FRAME-$SIZE_T*19`($sp)
 
817
        $PUSH   $out,`$FRAME-$SIZE_T*19`($sp)
826
818
        $PUSH   r14,`$FRAME-$SIZE_T*18`($sp)
827
819
        $PUSH   r15,`$FRAME-$SIZE_T*17`($sp)
828
820
        $PUSH   r16,`$FRAME-$SIZE_T*16`($sp)
877
869
$code.=<<___;
878
870
        bl      LAES_Td
879
871
        bl      Lppc_AES_decrypt_compact
 
872
        $POP    $out,`$FRAME-$SIZE_T*19`($sp)
880
873
___
881
874
$code.=<<___ if ($LITTLE_ENDIAN);
882
875
        rotlwi  $t0,$s0,8
945
938
 
946
939
        bl      LAES_Td
947
940
        bl      Lppc_AES_decrypt_compact
 
941
        $POP    $out,`$FRAME-$SIZE_T*19`($sp)
948
942
 
949
943
        extrwi  $acc00,$s0,8,0
950
944
        extrwi  $acc01,$s0,8,8
977
971
 
978
972
Ldec_done:
979
973
        $POP    r0,`$FRAME+$LRSAVE`($sp)
980
 
        $POP    $toc,`$FRAME-$SIZE_T*20`($sp)
981
 
        $POP    r13,`$FRAME-$SIZE_T*19`($sp)
982
974
        $POP    r14,`$FRAME-$SIZE_T*18`($sp)
983
975
        $POP    r15,`$FRAME-$SIZE_T*17`($sp)
984
976
        $POP    r16,`$FRAME-$SIZE_T*16`($sp)
1449
1441
        blr
1450
1442
        .long   0
1451
1443
        .byte   0,12,0x14,0,0,0,0,0
 
1444
.size   .AES_decrypt,.-.AES_decrypt
1452
1445
 
1453
1446
.asciz  "AES for PPC, CRYPTOGAMS by <appro\@openssl.org>"
1454
1447
.align  7