Eliminate copies of TeN and TdN, use those found in assembler module.
authorAndy Polyakov <appro@openssl.org>
Thu, 23 Dec 2004 21:40:23 +0000 (21:40 +0000)
committerAndy Polyakov <appro@openssl.org>
Thu, 23 Dec 2004 21:40:23 +0000 (21:40 +0000)
crypto/aes/aes_core.c
crypto/aes/asm/aes-ia64.S

index 29e41edd10bc3209d19324a60ccb504b341b0d02..1e155a31917c8afa7da5be34a261c57c62c2c0cf 100644 (file)
@@ -53,6 +53,20 @@ Td3[x] = Si[x].[09, 0d, 0b, 0e];
 Td4[x] = Si[x].[01, 01, 01, 01];
 */
 
 Td4[x] = Si[x].[01, 01, 01, 01];
 */
 
+#ifdef AES_ASM
+extern const u32 AES_Te[5][256];
+#define Te0 AES_Te[0]
+#define Te1 AES_Te[1]
+#define Te2 AES_Te[2]
+#define Te3 AES_Te[3]
+#define Te4 AES_Te[4]
+extern const u32 AES_Td[5][256];
+#define Td0 AES_Td[0]
+#define Td1 AES_Td[1]
+#define Td2 AES_Td[2]
+#define Td3 AES_Td[3]
+#define Td4 AES_Td[4]
+#else
 static const u32 Te0[256] = {
     0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
     0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
 static const u32 Te0[256] = {
     0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
     0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
@@ -715,6 +729,7 @@ static const u32 Td4[256] = {
     0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
     0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
 };
     0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
     0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
 };
+#endif
 static const u32 rcon[] = {
        0x01000000, 0x02000000, 0x04000000, 0x08000000,
        0x10000000, 0x20000000, 0x40000000, 0x80000000,
 static const u32 rcon[] = {
        0x01000000, 0x02000000, 0x04000000, 0x08000000,
        0x10000000, 0x20000000, 0x40000000, 0x80000000,
index 1bad469e55094c6d19b0b785ce627dfac41b3050..46957aed3395b87c0d45584b0e08e5782e80c6c2 100644 (file)
@@ -83,7 +83,7 @@ AES_encrypt:
        mov     r44=r33                 // save 2nd arg
        mov     twenty4=24      }
 { .mmi;        ld4     r23=[r41],8
        mov     r44=r33                 // save 2nd arg
        mov     twenty4=24      }
 { .mmi;        ld4     r23=[r41],8
-       addl    te0=@ltoff(Te0#),gp
+       addl    te0=@ltoff(AES_Te#),gp
        ADDP    r35=KSZ*60,r34  };;     // &AES_KEY->rounds, borrow s1
 { .mmi;        ld8     te0=[te0]
        ld4     r35=[r35]               // AES_KEY->rounds
        ADDP    r35=KSZ*60,r34  };;     // &AES_KEY->rounds, borrow s1
 { .mmi;        ld8     te0=[te0]
        ld4     r35=[r35]               // AES_KEY->rounds
@@ -130,7 +130,7 @@ AES_encrypt:
        mov     maskff=0xff     }//;;
 { .mmi;        ld1     r30=[r42]
        ld1     r31=[r43]
        mov     maskff=0xff     }//;;
 { .mmi;        ld1     r30=[r42]
        ld1     r31=[r43]
-       addl    te0=@ltoff(Te0#),gp     };;     // that was close...
+       addl    te0=@ltoff(AES_Te#),gp  };;     // that was close...
 
 { .mii;        ld8     te0=[te0]
        dep     r19=r16,r19,24,8        //;;
 
 { .mii;        ld8     te0=[te0]
        dep     r19=r16,r19,24,8        //;;
@@ -339,7 +339,7 @@ while(<>) {
 
        s/AES_encrypt/AES_decrypt/g;
        s/\.Le_/.Ld_/g;
 
        s/AES_encrypt/AES_decrypt/g;
        s/\.Le_/.Ld_/g;
-       s/Te0#/Td0#/g;
+       s/AES_Te#/AES_Td#/g;
 
        print;
 
 
        print;
 
@@ -598,8 +598,9 @@ AES_decrypt:
 
 // leave it in .text segment...
 .align 64
 
 // leave it in .text segment...
 .align 64
-.type  Te0#,@object
-Te0:   data4   0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d
+.global        AES_Te#
+.type  AES_Te#,@object
+AES_Te:        data4   0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d
        data4   0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554
        data4   0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d
        data4   0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a
        data4   0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554
        data4   0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d
        data4   0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a
@@ -923,11 +924,12 @@ Te0:      data4   0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d
        data4   0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868
        data4   0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f
        data4   0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616
        data4   0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868
        data4   0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f
        data4   0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616
-.size  Te0#,5*256*4    // HP-UX assembler fails to ".-Te0#"
+.size  AES_Te#,5*256*4 // HP-UX assembler fails to ".-AES_Te#"
 
 .align 64
 
 .align 64
-.type  Td0#,@object
-Td0:   data4   0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96
+.global        AES_Te#
+.type  AES_Td#,@object
+AES_Td:        data4   0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96
        data4   0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393
        data4   0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25
        data4   0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f
        data4   0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393
        data4   0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25
        data4   0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f
@@ -1251,4 +1253,4 @@ Td0:      data4   0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96
        data4   0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626
        data4   0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363
        data4   0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d
        data4   0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626
        data4   0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363
        data4   0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d
-.size  Td0#,5*256*4    // HP-UX assembler fails to ".-Td0#"
+.size  AES_Td#,5*256*4 // HP-UX assembler fails to ".-AES_Td#"