Access to VRSAVE have a high cost in performance.
Since ABI was update we don't need to save what
vector register we are using. Removing VRSAVE access
can improve a bit more our performance.

Signed-off-by: Leonidas S. Barbosa <leosi...@linux.vnet.ibm.com>
Signed-off-by: Paulo Flabiano Smorigo <pfsmor...@linux.vnet.ibm.com>
---
 crypto/aes/asm/aesp8-ppc.pl     | 20 --------------------
 crypto/modes/asm/ghashp8-ppc.pl | 11 -----------
 2 files changed, 31 deletions(-)

diff --git a/crypto/aes/asm/aesp8-ppc.pl b/crypto/aes/asm/aesp8-ppc.pl
index a1891cc..35f36ef 100755
--- a/crypto/aes/asm/aesp8-ppc.pl
+++ b/crypto/aes/asm/aesp8-ppc.pl
@@ -104,10 +104,6 @@ Lset_encrypt_key:
        andi.           r0,$bits,0x3f
        bne-            Lenc_key_abort
 
-       lis             r0,0xfff0
-       mfspr           $vrsave,256
-       mtspr           256,r0
-
        bl              Lconsts
        mtlr            r11
 
@@ -336,7 +332,6 @@ Ldone:
        vsel            $in1,$outhead,$in1,$outmask
        stvx            $in1,0,$inp
        li              $ptr,0
-       mtspr           256,$vrsave
        stw             $rounds,0($out)
 
 Lenc_key_abort:
@@ -408,10 +403,7 @@ $code.=<<___;
 .align 5
 .${prefix}_${dir}crypt:
        lwz             $rounds,240($key)
-       lis             r0,0xfc00
-       mfspr           $vrsave,256
        li              $idx,15                 # 15 is not typo
-       mtspr           256,r0
 
        lvx             v0,0,$inp
        neg             r11,$out
@@ -465,7 +457,6 @@ Loop_${dir}c:
        vsel            v0,v0,v4,v2
        stvx            v0,$idx,$out
 
-       mtspr           256,$vrsave
        blr
        .long           0
        .byte           0,12,0x14,0,0,0,3,0
@@ -490,9 +481,6 @@ $code.=<<___;
        bltlr-
 
        cmpwi           $enc,0                  # test direction
-       lis             r0,0xffe0
-       mfspr           $vrsave,256
-       mtspr           256,r0
 
        li              $idx,15
        vxor            $rndkey0,$rndkey0,$rndkey0
@@ -638,7 +626,6 @@ Lcbc_done:
        vsel            $inout,$ivec,$inptail,$outmask
        stvx            $inout,$idx,$ivp
 
-       mtspr           256,$vrsave
        blr
        .long           0
        .byte           0,12,0x14,0,0,0,6,0
@@ -1196,7 +1183,6 @@ Lcbc_dec8x_done:
        stvx            $inpperm,r11,$sp
        addi            r11,r11,32
 
-       mtspr           256,$vrsave
        lvx             v20,r10,$sp             # ABI says so
        addi            r10,r10,32
        lvx             v21,r11,$sp
@@ -1249,10 +1235,6 @@ $code.=<<___;
        ${UCMP}i        $len,1
        bltlr-
 
-       lis             r0,0xfff0
-       mfspr           $vrsave,256
-       mtspr           256,r0
-
        li              $idx,15
        vxor            $rndkey0,$rndkey0,$rndkey0
        le?vspltisb     $tmp,0x0f
@@ -1344,7 +1326,6 @@ Loop_ctr32_enc:
        vsel            $inout,$outhead,$inout,$outmask
        stvx            $inout,0,$out
 
-       mtspr           256,$vrsave
        blr
        .long           0
        .byte           0,12,0x14,0,0,0,6,0
@@ -1849,7 +1830,6 @@ Lctr32_enc8x_done:
        stvx            $inpperm,r11,$sp
        addi            r11,r11,32
 
-       mtspr           256,$vrsave
        lvx             v20,r10,$sp             # ABI says so
        addi            r10,r10,32
        lvx             v21,r11,$sp
diff --git a/crypto/modes/asm/ghashp8-ppc.pl b/crypto/modes/asm/ghashp8-ppc.pl
index e76a58c..63e46fa 100755
--- a/crypto/modes/asm/ghashp8-ppc.pl
+++ b/crypto/modes/asm/ghashp8-ppc.pl
@@ -46,7 +46,6 @@ my ($Xip,$Htbl,$inp,$len)=map("r$_",(3..6));  # argument block
 
 my ($Xl,$Xm,$Xh,$IN)=map("v$_",(0..3));
 my ($zero,$t0,$t1,$t2,$xC2,$H,$Hh,$Hl,$lemask)=map("v$_",(4..12));
-my $vrsave="r12";
 
 $code=<<___;
 .machine       "any"
@@ -56,11 +55,8 @@ $code=<<___;
 .globl .gcm_init_p8
 .align 5
 .gcm_init_p8:
-       lis             r0,0xfff0
        li              r8,0x10
-       mfspr           $vrsave,256
        li              r9,0x20
-       mtspr           256,r0
        li              r10,0x30
        lvx_u           $H,0,r4                 # load H
 
@@ -90,7 +86,6 @@ $code=<<___;
        stvx_u          $H, r9,r3
        stvx_u          $Hh,r10,r3
 
-       mtspr           256,$vrsave
        blr
        .long           0
        .byte           0,12,0x14,0,0,0,2,0
@@ -102,9 +97,7 @@ $code=<<___;
 .gcm_gmult_p8:
        lis             r0,0xfff8
        li              r8,0x10
-       mfspr           $vrsave,256
        li              r9,0x20
-       mtspr           256,r0
        li              r10,0x30
        lvx_u           $IN,0,$Xip              # load Xi
 
@@ -140,7 +133,6 @@ $code=<<___;
        le?vperm        $Xl,$Xl,$Xl,$lemask
        stvx_u          $Xl,0,$Xip              # write out Xi
 
-       mtspr           256,$vrsave
        blr
        .long           0
        .byte           0,12,0x14,0,0,0,2,0
@@ -152,9 +144,7 @@ $code=<<___;
 .gcm_ghash_p8:
        lis             r0,0xfff8
        li              r8,0x10
-       mfspr           $vrsave,256
        li              r9,0x20
-       mtspr           256,r0
        li              r10,0x30
        lvx_u           $Xl,0,$Xip              # load Xi
 
@@ -209,7 +199,6 @@ Loop:
        le?vperm        $Xl,$Xl,$Xl,$lemask
        stvx_u          $Xl,0,$Xip              # write out Xi
 
-       mtspr           256,$vrsave
        blr
        .long           0
        .byte           0,12,0x14,0,0,0,4,0
-- 
2.5.0

_______________________________________________
openssl-bugs-mod mailing list
openssl-bugs-...@openssl.org
https://mta.openssl.org/mailman/listinfo/openssl-bugs-mod

_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to