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 <[email protected]> Signed-off-by: Paulo Flabiano Smorigo <[email protected]> --- 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 [email protected] https://mta.openssl.org/mailman/listinfo/openssl-bugs-mod _______________________________________________ openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev
