]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
[PowerPC] Use INC_GPR/INC_VR marcos and define HAVE_NATIVE_poly1305_blocks in fat...
authorMaamoun TK <maamoun.tk@googlemail.com>
Tue, 8 Nov 2022 06:19:33 +0000 (08:19 +0200)
committerMaamoun TK <maamoun.tk@googlemail.com>
Tue, 8 Nov 2022 06:19:33 +0000 (08:19 +0200)
poly1305-update.c
powerpc64/fat/poly1305-blocks.asm
powerpc64/machine.m4
powerpc64/p9/poly1305.m4

index 5493e17b23e153e370c9e07d0e1b54f9641fd898..15ee32311b7a8e8da728383dac80edba4444aa9b 100644 (file)
@@ -64,7 +64,7 @@ _nettle_poly1305_update (struct poly1305_ctx *ctx,
                               length, m);
       _nettle_poly1305_block(ctx, block, 1);
     }
-#if HAVE_NATIVE_poly1305_blocks || HAVE_NATIVE_fat_poly1305_blocks
+#if HAVE_NATIVE_poly1305_blocks
   m = _nettle_poly1305_blocks (ctx, length >> 4, m);
   length &= 15;
 #else
index e6435f44e3ab11dc56a0470003c755a26a0a88ab..9efef0a0bb663c333888e233b99b098eeb2a264d 100644 (file)
@@ -30,7 +30,9 @@ ifelse(`
    not, see http://www.gnu.org/licenses/.
 ')
 
-dnl PROLOGUE(_nettle_fat_poly1305_blocks) picked up by configure
+dnl picked up by configure
+dnl PROLOGUE(_nettle_poly1305_blocks)
+dnl PROLOGUE(_nettle_fat_poly1305_blocks)
 
 define(`fat_transform', `$1_ppc64')
 include_src(`powerpc64/p9/poly1305-blocks.asm')
index b59f086370870aa794c159ed915a31be8d4ecce3..8f28f2950223890243bb85bfb3aeb2770b60d219 100644 (file)
@@ -51,3 +51,15 @@ forloop(i,0,63,`deflit(`vs'i,i)')
 forloop(i,0,31,`deflit(`f'i,i)')
 forloop(i,0,7, `deflit(`cr'i,i)')
 ')
+
+C Increase index of general-purpose register by specific value
+C INC_GPR(GPR, INC)
+define(`INC_GPR',`ifelse(substr($1,0,1),`r',
+``r'eval($2+substr($1,1,len($1)))',
+`eval($2+$1)')')
+
+C Increase index of vector register by specific value
+C INC_VR(VR, INC)
+define(`INC_VR',`ifelse(substr($1,0,1),`v',
+``v'eval($2+substr($1,1,len($1)))',
+`eval($2+$1)')')
index 265035fa9c172acdb6319524d9b08be500d3f039..7fc495b4df64372163db1cf04f03ba0277d8737f 100644 (file)
@@ -4,34 +4,34 @@ define(`POLY1305_BLOCK_THRESHOLD', `12')
 
 C DEFINES_BLOCK_R64(GPR0, VR0)
 define(`DEFINES_BLOCK_R64', `
-       define(`H0', `eval(0+$1)')
-       define(`H1', `eval(1+$1)')
-       define(`H2', `eval(2+$1)')
+       define(`H0', `$1')
+       define(`H1', `INC_GPR($1,1)')
+       define(`H2', `INC_GPR($1,2)')
        
-       define(`T0', `eval(3+$1)')
-       define(`T1', `eval(4+$1)')
-       define(`T2', `eval(2+$1)')
-       define(`T2A', `eval(3+$1)')
-       define(`T2S', `eval(4+$1)')
-       define(`RZ', `eval(0+$1)')
-       define(`IDX', `eval(4+$1)')
+       define(`T0', `INC_GPR($1,3)')
+       define(`T1', `INC_GPR($1,4)')
+       define(`T2', `H2')
+       define(`T2A', `INC_GPR($1,3)')
+       define(`T2S', `INC_GPR($1,4)')
+       define(`RZ', `H0')
+       define(`IDX', `INC_GPR($1,4)')
 
-       define(`F0', `eval(0+$2)')
-       define(`F1', `eval(1+$2)')
+       define(`F0', `$2')
+       define(`F1', `INC_VR($2,1)')
        
-       define(`ZERO', `eval(2+$2)')
-       define(`F0S', `eval(3+$2)')
-       define(`F11', `eval(4+$2)')
-       define(`T', `eval(5+$2)')
+       define(`ZERO', `INC_VR($2,2)')
+       define(`F0S', `INC_VR($2,3)')
+       define(`F11', `INC_VR($2,4)')
+       define(`T', `INC_VR($2,5)')
 
-       define(`R', `eval(6+$2)')
-       define(`S', `eval(7+$2)')
+       define(`R', `INC_VR($2,6)')
+       define(`S', `INC_VR($2,7)')
 
-       define(`T00', `eval(8+$2)')
-       define(`T10', `eval(9+$2)')
-       define(`T11', `eval(10+$2)')
-       define(`MU0', `eval(11+$2)')
-       define(`MU1', `eval(12+$2)')
+       define(`T00', `INC_VR($2,8)')
+       define(`T10', `INC_VR($2,9)')
+       define(`T11', `INC_VR($2,10)')
+       define(`MU0', `INC_VR($2,11)')
+       define(`MU1', `INC_VR($2,12)')
        ')
 
 C CTX is the address of context where key and pre-computed values are stored
@@ -85,7 +85,7 @@ IF_BE(`
        mtvsrdd         VSR(T00), T2S, RZ
        mtvsrdd         VSR(T10), 0, T2
 
-       C Mutiplicate key by combined state and block
+       C Multiply key by combined state and block
        vmsumudm        F0, T, MU0, ZERO
        vmsumudm        F1, T, MU1, ZERO
        vmsumudm        F11, T11, MU1, ZERO