sha512-armv8: Pull the .16b suffixes out of the variables In aarch64 AdvSIMD (aka NEON), each 128-bit vector register can be viewed in different ways. E.g. v0.16b is v0 viewed as 16 bytes, while v0.4s is v0 viewed as 4 32-bit words. (s stands for "single word".) In the assembly language, some instructions take multiple suffixes, while others can only be used with one suffix. A single register may need to be used with multiple suffixes in a given function. This makes packaging the suffixes into variables tricky because the code cannot choose which one. This file works by just always writing .16b and then using regexes at the bottom to fix them up, sometimes by inventing ad-hoc instructions like add.i32. Other times, it just always gets them wrong (sha256 and sha512 instructions) but gets by because the regexes rewrite them into bytes anyway. So this file looks like more "normal" aarch64 assembly, let's remove these. This first commit pulls the suffixes out of the variables and into where they are used. Other than whitespace to realign the comments, this should not change the value of $code. Bug: 478924351 Change-Id: I9cad9b1552eb6115240e2e80096e511d594374c5 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/87527 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: Lily Chen <chlily@google.com>
diff --git a/crypto/fipsmodule/sha/asm/sha512-armv8.pl b/crypto/fipsmodule/sha/asm/sha512-armv8.pl index 79ca630..dc4ffef 100644 --- a/crypto/fipsmodule/sha/asm/sha512-armv8.pl +++ b/crypto/fipsmodule/sha/asm/sha512-armv8.pl
@@ -326,10 +326,10 @@ if ($SZ==4) { my $Ktbl="x3"; -my ($ABCD,$EFGH,$abcd)=map("v$_.16b",(0..2)); -my @MSG=map("v$_.16b",(4..7)); -my ($W0,$W1)=("v16.4s","v17.4s"); -my ($ABCD_SAVE,$EFGH_SAVE)=("v18.16b","v19.16b"); +my ($ABCD,$EFGH,$abcd)=map("v$_",(0..2)); +my @MSG=map("v$_",(4..7)); +my ($W0,$W1)=("v16","v17"); +my ($ABCD_SAVE,$EFGH_SAVE)=("v18","v19"); $code.=<<___; .text @@ -343,64 +343,64 @@ stp x29,x30,[sp,#-16]! add x29,sp,#0 - ld1.32 {$ABCD,$EFGH},[$ctx] + ld1.32 {$ABCD.16b,$EFGH.16b},[$ctx] adrp $Ktbl,:pg_hi21:.LK256 add $Ktbl,$Ktbl,:lo12:.LK256 .Loop_hw: - ld1 {@MSG[0]-@MSG[3]},[$inp],#64 + ld1 {@MSG[0].16b-@MSG[3].16b},[$inp],#64 sub $num,$num,#1 - ld1.32 {$W0},[$Ktbl],#16 - rev32 @MSG[0],@MSG[0] - rev32 @MSG[1],@MSG[1] - rev32 @MSG[2],@MSG[2] - rev32 @MSG[3],@MSG[3] - orr $ABCD_SAVE,$ABCD,$ABCD // offload - orr $EFGH_SAVE,$EFGH,$EFGH + ld1.32 {$W0.4s},[$Ktbl],#16 + rev32 @MSG[0].16b,@MSG[0].16b + rev32 @MSG[1].16b,@MSG[1].16b + rev32 @MSG[2].16b,@MSG[2].16b + rev32 @MSG[3].16b,@MSG[3].16b + orr $ABCD_SAVE.16b,$ABCD.16b,$ABCD.16b // offload + orr $EFGH_SAVE.16b,$EFGH.16b,$EFGH.16b ___ for($i=0;$i<12;$i++) { $code.=<<___; - ld1.32 {$W1},[$Ktbl],#16 - add.i32 $W0,$W0,@MSG[0] - sha256su0 @MSG[0],@MSG[1] - orr $abcd,$ABCD,$ABCD - sha256h $ABCD,$EFGH,$W0 - sha256h2 $EFGH,$abcd,$W0 - sha256su1 @MSG[0],@MSG[2],@MSG[3] + ld1.32 {$W1.4s},[$Ktbl],#16 + add.i32 $W0.4s,$W0.4s,@MSG[0].16b + sha256su0 @MSG[0].16b,@MSG[1].16b + orr $abcd.16b,$ABCD.16b,$ABCD.16b + sha256h $ABCD.16b,$EFGH.16b,$W0.4s + sha256h2 $EFGH.16b,$abcd.16b,$W0.4s + sha256su1 @MSG[0].16b,@MSG[2].16b,@MSG[3].16b ___ ($W0,$W1)=($W1,$W0); push(@MSG,shift(@MSG)); } $code.=<<___; - ld1.32 {$W1},[$Ktbl],#16 - add.i32 $W0,$W0,@MSG[0] - orr $abcd,$ABCD,$ABCD - sha256h $ABCD,$EFGH,$W0 - sha256h2 $EFGH,$abcd,$W0 + ld1.32 {$W1.4s},[$Ktbl],#16 + add.i32 $W0.4s,$W0.4s,@MSG[0].16b + orr $abcd.16b,$ABCD.16b,$ABCD.16b + sha256h $ABCD.16b,$EFGH.16b,$W0.4s + sha256h2 $EFGH.16b,$abcd.16b,$W0.4s - ld1.32 {$W0},[$Ktbl],#16 - add.i32 $W1,$W1,@MSG[1] - orr $abcd,$ABCD,$ABCD - sha256h $ABCD,$EFGH,$W1 - sha256h2 $EFGH,$abcd,$W1 + ld1.32 {$W0.4s},[$Ktbl],#16 + add.i32 $W1.4s,$W1.4s,@MSG[1].16b + orr $abcd.16b,$ABCD.16b,$ABCD.16b + sha256h $ABCD.16b,$EFGH.16b,$W1.4s + sha256h2 $EFGH.16b,$abcd.16b,$W1.4s - ld1.32 {$W1},[$Ktbl] - add.i32 $W0,$W0,@MSG[2] + ld1.32 {$W1.4s},[$Ktbl] + add.i32 $W0.4s,$W0.4s,@MSG[2].16b sub $Ktbl,$Ktbl,#$rounds*$SZ-16 // rewind - orr $abcd,$ABCD,$ABCD - sha256h $ABCD,$EFGH,$W0 - sha256h2 $EFGH,$abcd,$W0 + orr $abcd.16b,$ABCD.16b,$ABCD.16b + sha256h $ABCD.16b,$EFGH.16b,$W0.4s + sha256h2 $EFGH.16b,$abcd.16b,$W0.4s - add.i32 $W1,$W1,@MSG[3] - orr $abcd,$ABCD,$ABCD - sha256h $ABCD,$EFGH,$W1 - sha256h2 $EFGH,$abcd,$W1 + add.i32 $W1.4s,$W1.4s,@MSG[3].16b + orr $abcd.16b,$ABCD.16b,$ABCD.16b + sha256h $ABCD.16b,$EFGH.16b,$W1.4s + sha256h2 $EFGH.16b,$abcd.16b,$W1.4s - add.i32 $ABCD,$ABCD,$ABCD_SAVE - add.i32 $EFGH,$EFGH,$EFGH_SAVE + add.i32 $ABCD.16b,$ABCD.16b,$ABCD_SAVE.16b + add.i32 $EFGH.16b,$EFGH.16b,$EFGH_SAVE.16b cbnz $num,.Loop_hw - st1.32 {$ABCD,$EFGH},[$ctx] + st1.32 {$ABCD.16b,$EFGH.16b},[$ctx] ldr x29,[sp],#16 ret @@ -412,11 +412,11 @@ if ($SZ==8) { my $Ktbl="x3"; -my @H = map("v$_.16b",(0..4)); -my ($fg,$de,$m9_10)=map("v$_.16b",(5..7)); -my @MSG=map("v$_.16b",(16..23)); -my ($W0,$W1)=("v24.2d","v25.2d"); -my ($AB,$CD,$EF,$GH)=map("v$_.16b",(26..29)); +my @H = map("v$_",(0..4)); +my ($fg,$de,$m9_10)=map("v$_",(5..7)); +my @MSG=map("v$_",(16..23)); +my ($W0,$W1)=("v24","v25"); +my ($AB,$CD,$EF,$GH)=map("v$_",(26..29)); $code.=<<___; .text @@ -430,83 +430,83 @@ stp x29,x30,[sp,#-16]! add x29,sp,#0 - ld1 {@MSG[0]-@MSG[3]},[$inp],#64 // load input - ld1 {@MSG[4]-@MSG[7]},[$inp],#64 + ld1 {@MSG[0].16b-@MSG[3].16b},[$inp],#64 // load input + ld1 {@MSG[4].16b-@MSG[7].16b},[$inp],#64 - ld1.64 {@H[0]-@H[3]},[$ctx] // load context + ld1.64 {@H[0].16b-@H[3].16b},[$ctx] // load context adrp $Ktbl,:pg_hi21:.LK512 add $Ktbl,$Ktbl,:lo12:.LK512 - rev64 @MSG[0],@MSG[0] - rev64 @MSG[1],@MSG[1] - rev64 @MSG[2],@MSG[2] - rev64 @MSG[3],@MSG[3] - rev64 @MSG[4],@MSG[4] - rev64 @MSG[5],@MSG[5] - rev64 @MSG[6],@MSG[6] - rev64 @MSG[7],@MSG[7] + rev64 @MSG[0].16b,@MSG[0].16b + rev64 @MSG[1].16b,@MSG[1].16b + rev64 @MSG[2].16b,@MSG[2].16b + rev64 @MSG[3].16b,@MSG[3].16b + rev64 @MSG[4].16b,@MSG[4].16b + rev64 @MSG[5].16b,@MSG[5].16b + rev64 @MSG[6].16b,@MSG[6].16b + rev64 @MSG[7].16b,@MSG[7].16b b .Loop_hw .align 4 .Loop_hw: - ld1.64 {$W0},[$Ktbl],#16 + ld1.64 {$W0.2d},[$Ktbl],#16 subs $num,$num,#1 sub x4,$inp,#128 - orr $AB,@H[0],@H[0] // offload - orr $CD,@H[1],@H[1] - orr $EF,@H[2],@H[2] - orr $GH,@H[3],@H[3] - csel $inp,$inp,x4,ne // conditional rewind + orr $AB.16b,@H[0].16b,@H[0].16b // offload + orr $CD.16b,@H[1].16b,@H[1].16b + orr $EF.16b,@H[2].16b,@H[2].16b + orr $GH.16b,@H[3].16b,@H[3].16b + csel $inp,$inp,x4,ne // conditional rewind ___ for($i=0;$i<32;$i++) { $code.=<<___; - add.i64 $W0,$W0,@MSG[0] - ld1.64 {$W1},[$Ktbl],#16 - ext $W0,$W0,$W0,#8 - ext $fg,@H[2],@H[3],#8 - ext $de,@H[1],@H[2],#8 - add.i64 @H[3],@H[3],$W0 // "T1 + H + K512[i]" - sha512su0 @MSG[0],@MSG[1] - ext $m9_10,@MSG[4],@MSG[5],#8 - sha512h @H[3],$fg,$de - sha512su1 @MSG[0],@MSG[7],$m9_10 - add.i64 @H[4],@H[1],@H[3] // "D + T1" - sha512h2 @H[3],$H[1],@H[0] + add.i64 $W0.2d,$W0.2d,@MSG[0].16b + ld1.64 {$W1.2d},[$Ktbl],#16 + ext $W0.2d,$W0.2d,$W0.2d,#8 + ext $fg.16b,@H[2].16b,@H[3].16b,#8 + ext $de.16b,@H[1].16b,@H[2].16b,#8 + add.i64 @H[3].16b,@H[3].16b,$W0.2d // "T1 + H + K512[i]" + sha512su0 @MSG[0].16b,@MSG[1].16b + ext $m9_10.16b,@MSG[4].16b,@MSG[5].16b,#8 + sha512h @H[3].16b,$fg.16b,$de.16b + sha512su1 @MSG[0].16b,@MSG[7].16b,$m9_10.16b + add.i64 @H[4].16b,@H[1].16b,@H[3].16b // "D + T1" + sha512h2 @H[3].16b,$H[1].16b,@H[0].16b ___ ($W0,$W1)=($W1,$W0); push(@MSG,shift(@MSG)); @H = (@H[3],@H[0],@H[4],@H[2],@H[1]); } for(;$i<40;$i++) { $code.=<<___ if ($i<39); - ld1.64 {$W1},[$Ktbl],#16 + ld1.64 {$W1.2d},[$Ktbl],#16 ___ $code.=<<___ if ($i==39); - sub $Ktbl,$Ktbl,#$rounds*$SZ // rewind + sub $Ktbl,$Ktbl,#$rounds*$SZ // rewind ___ $code.=<<___; - add.i64 $W0,$W0,@MSG[0] - ld1 {@MSG[0]},[$inp],#16 // load next input - ext $W0,$W0,$W0,#8 - ext $fg,@H[2],@H[3],#8 - ext $de,@H[1],@H[2],#8 - add.i64 @H[3],@H[3],$W0 // "T1 + H + K512[i]" - sha512h @H[3],$fg,$de - rev64 @MSG[0],@MSG[0] - add.i64 @H[4],@H[1],@H[3] // "D + T1" - sha512h2 @H[3],$H[1],@H[0] + add.i64 $W0.2d,$W0.2d,@MSG[0].16b + ld1 {@MSG[0].16b},[$inp],#16 // load next input + ext $W0.2d,$W0.2d,$W0.2d,#8 + ext $fg.16b,@H[2].16b,@H[3].16b,#8 + ext $de.16b,@H[1].16b,@H[2].16b,#8 + add.i64 @H[3].16b,@H[3].16b,$W0.2d // "T1 + H + K512[i]" + sha512h @H[3].16b,$fg.16b,$de.16b + rev64 @MSG[0].16b,@MSG[0].16b + add.i64 @H[4].16b,@H[1].16b,@H[3].16b // "D + T1" + sha512h2 @H[3].16b,$H[1].16b,@H[0].16b ___ ($W0,$W1)=($W1,$W0); push(@MSG,shift(@MSG)); @H = (@H[3],@H[0],@H[4],@H[2],@H[1]); } $code.=<<___; - add.i64 @H[0],@H[0],$AB // accumulate - add.i64 @H[1],@H[1],$CD - add.i64 @H[2],@H[2],$EF - add.i64 @H[3],@H[3],$GH + add.i64 @H[0].16b,@H[0].16b,$AB.16b // accumulate + add.i64 @H[1].16b,@H[1].16b,$CD.16b + add.i64 @H[2].16b,@H[2].16b,$EF.16b + add.i64 @H[3].16b,@H[3].16b,$GH.16b cbnz $num,.Loop_hw - st1.64 {@H[0]-@H[3]},[$ctx] // store context + st1.64 {@H[0].16b-@H[3].16b},[$ctx] // store context ldr x29,[sp],#16 ret
diff --git a/gen/bcm/sha512-armv8-apple.S b/gen/bcm/sha512-armv8-apple.S index b56252e..1a523cc 100644 --- a/gen/bcm/sha512-armv8-apple.S +++ b/gen/bcm/sha512-armv8-apple.S
@@ -1102,17 +1102,17 @@ ld1 {v24.2d},[x3],#16 subs x2,x2,#1 sub x4,x1,#128 - orr v26.16b,v0.16b,v0.16b // offload + orr v26.16b,v0.16b,v0.16b // offload orr v27.16b,v1.16b,v1.16b orr v28.16b,v2.16b,v2.16b orr v29.16b,v3.16b,v3.16b - csel x1,x1,x4,ne // conditional rewind + csel x1,x1,x4,ne // conditional rewind add v24.2d,v24.2d,v16.2d ld1 {v25.2d},[x3],#16 ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1124,7 +1124,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1136,7 +1136,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1148,7 +1148,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1160,7 +1160,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1172,7 +1172,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1184,7 +1184,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1196,7 +1196,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1208,7 +1208,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1220,7 +1220,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1232,7 +1232,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1244,7 +1244,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1256,7 +1256,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1268,7 +1268,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1280,7 +1280,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1292,7 +1292,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1304,7 +1304,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1316,7 +1316,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1328,7 +1328,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1340,7 +1340,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1352,7 +1352,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1364,7 +1364,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1376,7 +1376,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1388,7 +1388,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1400,7 +1400,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1412,7 +1412,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1424,7 +1424,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1436,7 +1436,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1448,7 +1448,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1460,7 +1460,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1472,7 +1472,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1484,7 +1484,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1497,7 +1497,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b rev64 v16.16b,v16.16b add v0.2d,v3.2d,v4.2d // "D + T1" @@ -1508,7 +1508,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b rev64 v17.16b,v17.16b add v3.2d,v2.2d,v1.2d // "D + T1" @@ -1519,7 +1519,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b rev64 v18.16b,v18.16b add v2.2d,v4.2d,v0.2d // "D + T1" @@ -1530,7 +1530,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b rev64 v19.16b,v19.16b add v4.2d,v1.2d,v3.2d // "D + T1" @@ -1541,7 +1541,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b rev64 v20.16b,v20.16b add v1.2d,v0.2d,v2.2d // "D + T1" @@ -1552,7 +1552,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b rev64 v21.16b,v21.16b add v0.2d,v3.2d,v4.2d // "D + T1" @@ -1563,23 +1563,23 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b rev64 v22.16b,v22.16b add v3.2d,v2.2d,v1.2d // "D + T1" .long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b - sub x3,x3,#80*8 // rewind + sub x3,x3,#80*8 // rewind add v25.2d,v25.2d,v23.2d ld1 {v23.16b},[x1],#16 // load next input ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b rev64 v23.16b,v23.16b add v2.2d,v4.2d,v0.2d // "D + T1" .long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b - add v0.2d,v0.2d,v26.2d // accumulate + add v0.2d,v0.2d,v26.2d // accumulate add v1.2d,v1.2d,v27.2d add v2.2d,v2.2d,v28.2d add v3.2d,v3.2d,v29.2d
diff --git a/gen/bcm/sha512-armv8-linux.S b/gen/bcm/sha512-armv8-linux.S index 793e9e6..ba33c06 100644 --- a/gen/bcm/sha512-armv8-linux.S +++ b/gen/bcm/sha512-armv8-linux.S
@@ -1102,17 +1102,17 @@ ld1 {v24.2d},[x3],#16 subs x2,x2,#1 sub x4,x1,#128 - orr v26.16b,v0.16b,v0.16b // offload + orr v26.16b,v0.16b,v0.16b // offload orr v27.16b,v1.16b,v1.16b orr v28.16b,v2.16b,v2.16b orr v29.16b,v3.16b,v3.16b - csel x1,x1,x4,ne // conditional rewind + csel x1,x1,x4,ne // conditional rewind add v24.2d,v24.2d,v16.2d ld1 {v25.2d},[x3],#16 ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1124,7 +1124,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1136,7 +1136,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1148,7 +1148,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1160,7 +1160,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1172,7 +1172,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1184,7 +1184,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1196,7 +1196,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1208,7 +1208,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1220,7 +1220,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1232,7 +1232,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1244,7 +1244,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1256,7 +1256,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1268,7 +1268,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1280,7 +1280,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1292,7 +1292,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1304,7 +1304,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1316,7 +1316,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1328,7 +1328,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1340,7 +1340,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1352,7 +1352,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1364,7 +1364,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1376,7 +1376,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1388,7 +1388,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1400,7 +1400,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1412,7 +1412,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1424,7 +1424,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1436,7 +1436,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1448,7 +1448,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1460,7 +1460,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1472,7 +1472,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .inst 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1484,7 +1484,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .inst 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1497,7 +1497,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b rev64 v16.16b,v16.16b add v0.2d,v3.2d,v4.2d // "D + T1" @@ -1508,7 +1508,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b rev64 v17.16b,v17.16b add v3.2d,v2.2d,v1.2d // "D + T1" @@ -1519,7 +1519,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b rev64 v18.16b,v18.16b add v2.2d,v4.2d,v0.2d // "D + T1" @@ -1530,7 +1530,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .inst 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b rev64 v19.16b,v19.16b add v4.2d,v1.2d,v3.2d // "D + T1" @@ -1541,7 +1541,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .inst 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b rev64 v20.16b,v20.16b add v1.2d,v0.2d,v2.2d // "D + T1" @@ -1552,7 +1552,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .inst 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b rev64 v21.16b,v21.16b add v0.2d,v3.2d,v4.2d // "D + T1" @@ -1563,23 +1563,23 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .inst 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b rev64 v22.16b,v22.16b add v3.2d,v2.2d,v1.2d // "D + T1" .inst 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b - sub x3,x3,#80*8 // rewind + sub x3,x3,#80*8 // rewind add v25.2d,v25.2d,v23.2d ld1 {v23.16b},[x1],#16 // load next input ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .inst 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b rev64 v23.16b,v23.16b add v2.2d,v4.2d,v0.2d // "D + T1" .inst 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b - add v0.2d,v0.2d,v26.2d // accumulate + add v0.2d,v0.2d,v26.2d // accumulate add v1.2d,v1.2d,v27.2d add v2.2d,v2.2d,v28.2d add v3.2d,v3.2d,v29.2d
diff --git a/gen/bcm/sha512-armv8-win.S b/gen/bcm/sha512-armv8-win.S index 7b09813..d8610ac 100644 --- a/gen/bcm/sha512-armv8-win.S +++ b/gen/bcm/sha512-armv8-win.S
@@ -1106,17 +1106,17 @@ ld1 {v24.2d},[x3],#16 subs x2,x2,#1 sub x4,x1,#128 - orr v26.16b,v0.16b,v0.16b // offload + orr v26.16b,v0.16b,v0.16b // offload orr v27.16b,v1.16b,v1.16b orr v28.16b,v2.16b,v2.16b orr v29.16b,v3.16b,v3.16b - csel x1,x1,x4,ne // conditional rewind + csel x1,x1,x4,ne // conditional rewind add v24.2d,v24.2d,v16.2d ld1 {v25.2d},[x3],#16 ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1128,7 +1128,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1140,7 +1140,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1152,7 +1152,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1164,7 +1164,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1176,7 +1176,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1188,7 +1188,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1200,7 +1200,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1212,7 +1212,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1224,7 +1224,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1236,7 +1236,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1248,7 +1248,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1260,7 +1260,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1272,7 +1272,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1284,7 +1284,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1296,7 +1296,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1308,7 +1308,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1320,7 +1320,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1332,7 +1332,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1344,7 +1344,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1356,7 +1356,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1368,7 +1368,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1380,7 +1380,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1392,7 +1392,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1404,7 +1404,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08230 //sha512su0 v16.16b,v17.16b ext v7.16b,v20.16b,v21.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1416,7 +1416,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08251 //sha512su0 v17.16b,v18.16b ext v7.16b,v21.16b,v22.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1428,7 +1428,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec08272 //sha512su0 v18.16b,v19.16b ext v7.16b,v22.16b,v23.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1440,7 +1440,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08293 //sha512su0 v19.16b,v20.16b ext v7.16b,v23.16b,v16.16b,#8 .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b @@ -1452,7 +1452,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082b4 //sha512su0 v20.16b,v21.16b ext v7.16b,v16.16b,v17.16b,#8 .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b @@ -1464,7 +1464,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec082d5 //sha512su0 v21.16b,v22.16b ext v7.16b,v17.16b,v18.16b,#8 .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b @@ -1476,7 +1476,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v24.2d // "T1 + H + K512[i]" .long 0xcec082f6 //sha512su0 v22.16b,v23.16b ext v7.16b,v18.16b,v19.16b,#8 .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b @@ -1488,7 +1488,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v25.2d // "T1 + H + K512[i]" .long 0xcec08217 //sha512su0 v23.16b,v16.16b ext v7.16b,v19.16b,v20.16b,#8 .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b @@ -1501,7 +1501,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b rev64 v16.16b,v16.16b add v0.2d,v3.2d,v4.2d // "D + T1" @@ -1512,7 +1512,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b rev64 v17.16b,v17.16b add v3.2d,v2.2d,v1.2d // "D + T1" @@ -1523,7 +1523,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b rev64 v18.16b,v18.16b add v2.2d,v4.2d,v0.2d // "D + T1" @@ -1534,7 +1534,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v2.16b,v3.16b,#8 ext v6.16b,v1.16b,v2.16b,#8 - add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" + add v3.2d,v3.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a3 //sha512h v3.16b,v5.16b,v6.16b rev64 v19.16b,v19.16b add v4.2d,v1.2d,v3.2d // "D + T1" @@ -1545,7 +1545,7 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v4.16b,v2.16b,#8 ext v6.16b,v0.16b,v4.16b,#8 - add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" + add v2.2d,v2.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a2 //sha512h v2.16b,v5.16b,v6.16b rev64 v20.16b,v20.16b add v1.2d,v0.2d,v2.2d // "D + T1" @@ -1556,7 +1556,7 @@ ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v1.16b,v4.16b,#8 ext v6.16b,v3.16b,v1.16b,#8 - add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" + add v4.2d,v4.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a4 //sha512h v4.16b,v5.16b,v6.16b rev64 v21.16b,v21.16b add v0.2d,v3.2d,v4.2d // "D + T1" @@ -1567,23 +1567,23 @@ ext v24.16b,v24.16b,v24.16b,#8 ext v5.16b,v0.16b,v1.16b,#8 ext v6.16b,v2.16b,v0.16b,#8 - add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" + add v1.2d,v1.2d,v24.2d // "T1 + H + K512[i]" .long 0xce6680a1 //sha512h v1.16b,v5.16b,v6.16b rev64 v22.16b,v22.16b add v3.2d,v2.2d,v1.2d // "D + T1" .long 0xce648441 //sha512h2 v1.16b,v2.16b,v4.16b - sub x3,x3,#80*8 // rewind + sub x3,x3,#80*8 // rewind add v25.2d,v25.2d,v23.2d ld1 {v23.16b},[x1],#16 // load next input ext v25.16b,v25.16b,v25.16b,#8 ext v5.16b,v3.16b,v0.16b,#8 ext v6.16b,v4.16b,v3.16b,#8 - add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" + add v0.2d,v0.2d,v25.2d // "T1 + H + K512[i]" .long 0xce6680a0 //sha512h v0.16b,v5.16b,v6.16b rev64 v23.16b,v23.16b add v2.2d,v4.2d,v0.2d // "D + T1" .long 0xce618480 //sha512h2 v0.16b,v4.16b,v1.16b - add v0.2d,v0.2d,v26.2d // accumulate + add v0.2d,v0.2d,v26.2d // accumulate add v1.2d,v1.2d,v27.2d add v2.2d,v2.2d,v28.2d add v3.2d,v3.2d,v29.2d