]> git.cryptolib.org Git - arm-crypto-lib.git/blobdiff - bmw/f1_autogen_large.c
speedup of bmw
[arm-crypto-lib.git] / bmw / f1_autogen_large.c
diff --git a/bmw/f1_autogen_large.c b/bmw/f1_autogen_large.c
new file mode 100644 (file)
index 0000000..75eff07
--- /dev/null
@@ -0,0 +1,200 @@
+/* BEGIN of automatic generated code */
+
+static inline
+void bmw_large_f1(uint64_t* q, const void* m, const void* h){ 
+/* expand_1( 0) */
+       q[16] = 
+               ((  ROTL64(((uint64_t*)m)[ 0], 1) 
+                 + ROTL64(((uint64_t*)m)[ 3], 4) 
+                 - ROTL64(((uint64_t*)m)[10], 11) 
+                 + 0x5555555555555550ULL 
+                )^ ((uint64_t*)h)[ 7] 
+               )
+               + S64_1(q[ 0]) + S64_2(q[ 1]) + S64_3(q[ 2]) + S64_0(q[ 3])
+               + S64_1(q[ 4]) + S64_2(q[ 5]) + S64_3(q[ 6]) + S64_0(q[ 7])
+               + S64_1(q[ 8]) + S64_2(q[ 9]) + S64_3(q[10]) + S64_0(q[11])
+               + S64_1(q[12]) + S64_2(q[13]) + S64_3(q[14]) + S64_0(q[15]);
+/* expand_1( 1) */
+       q[17] = 
+               ((  ROTL64(((uint64_t*)m)[ 1], 2) 
+                 + ROTL64(((uint64_t*)m)[ 4], 5) 
+                 - ROTL64(((uint64_t*)m)[11], 12) 
+                 + 0x5aaaaaaaaaaaaaa5ULL 
+                )^ ((uint64_t*)h)[ 8] 
+               )
+               + S64_1(q[ 1]) + S64_2(q[ 2]) + S64_3(q[ 3]) + S64_0(q[ 4])
+               + S64_1(q[ 5]) + S64_2(q[ 6]) + S64_3(q[ 7]) + S64_0(q[ 8])
+               + S64_1(q[ 9]) + S64_2(q[10]) + S64_3(q[11]) + S64_0(q[12])
+               + S64_1(q[13]) + S64_2(q[14]) + S64_3(q[15]) + S64_0(q[16]);
+/* expand_2( 2) */
+       q[18] = 
+               ((  ROTL64(((uint64_t*)m)[ 2], 3) 
+                 + ROTL64(((uint64_t*)m)[ 5], 6) 
+                 - ROTL64(((uint64_t*)m)[12], 13) 
+                 + 0x5ffffffffffffffaULL 
+                )^ ((uint64_t*)h)[ 9] 
+               )
+               +       q[ 2]  + R64_1(q[ 3]) +       q[ 4]  + R64_2(q[ 5])
+               +       q[ 6]  + R64_3(q[ 7]) +       q[ 8]  + R64_4(q[ 9])
+               +       q[10]  + R64_5(q[11]) +       q[12]  + R64_6(q[13])
+               +       q[14]  + R64_7(q[15]) + S64_4(q[16]) + S64_5(q[17]);
+/* expand_2( 3) */
+       q[19] = 
+               ((  ROTL64(((uint64_t*)m)[ 3], 4) 
+                 + ROTL64(((uint64_t*)m)[ 6], 7) 
+                 - ROTL64(((uint64_t*)m)[13], 14) 
+                 + 0x655555555555554fULL 
+                )^ ((uint64_t*)h)[10] 
+               )
+               +       q[ 3]  + R64_1(q[ 4]) +       q[ 5]  + R64_2(q[ 6])
+               +       q[ 7]  + R64_3(q[ 8]) +       q[ 9]  + R64_4(q[10])
+               +       q[11]  + R64_5(q[12]) +       q[13]  + R64_6(q[14])
+               +       q[15]  + R64_7(q[16]) + S64_4(q[17]) + S64_5(q[18]);
+/* expand_2( 4) */
+       q[20] = 
+               ((  ROTL64(((uint64_t*)m)[ 4], 5) 
+                 + ROTL64(((uint64_t*)m)[ 7], 8) 
+                 - ROTL64(((uint64_t*)m)[14], 15) 
+                 + 0x6aaaaaaaaaaaaaa4ULL 
+                )^ ((uint64_t*)h)[11] 
+               )
+               +       q[ 4]  + R64_1(q[ 5]) +       q[ 6]  + R64_2(q[ 7])
+               +       q[ 8]  + R64_3(q[ 9]) +       q[10]  + R64_4(q[11])
+               +       q[12]  + R64_5(q[13]) +       q[14]  + R64_6(q[15])
+               +       q[16]  + R64_7(q[17]) + S64_4(q[18]) + S64_5(q[19]);
+/* expand_2( 5) */
+       q[21] = 
+               ((  ROTL64(((uint64_t*)m)[ 5], 6) 
+                 + ROTL64(((uint64_t*)m)[ 8], 9) 
+                 - ROTL64(((uint64_t*)m)[15], 16) 
+                 + 0x6ffffffffffffff9ULL 
+                )^ ((uint64_t*)h)[12] 
+               )
+               +       q[ 5]  + R64_1(q[ 6]) +       q[ 7]  + R64_2(q[ 8])
+               +       q[ 9]  + R64_3(q[10]) +       q[11]  + R64_4(q[12])
+               +       q[13]  + R64_5(q[14]) +       q[15]  + R64_6(q[16])
+               +       q[17]  + R64_7(q[18]) + S64_4(q[19]) + S64_5(q[20]);
+/* expand_2( 6) */
+       q[22] = 
+               ((  ROTL64(((uint64_t*)m)[ 6], 7) 
+                 + ROTL64(((uint64_t*)m)[ 9], 10) 
+                 - ROTL64(((uint64_t*)m)[ 0], 1) 
+                 + 0x755555555555554eULL 
+                )^ ((uint64_t*)h)[13] 
+               )
+               +       q[ 6]  + R64_1(q[ 7]) +       q[ 8]  + R64_2(q[ 9])
+               +       q[10]  + R64_3(q[11]) +       q[12]  + R64_4(q[13])
+               +       q[14]  + R64_5(q[15]) +       q[16]  + R64_6(q[17])
+               +       q[18]  + R64_7(q[19]) + S64_4(q[20]) + S64_5(q[21]);
+/* expand_2( 7) */
+       q[23] = 
+               ((  ROTL64(((uint64_t*)m)[ 7], 8) 
+                 + ROTL64(((uint64_t*)m)[10], 11) 
+                 - ROTL64(((uint64_t*)m)[ 1], 2) 
+                 + 0x7aaaaaaaaaaaaaa3ULL 
+                )^ ((uint64_t*)h)[14] 
+               )
+               +       q[ 7]  + R64_1(q[ 8]) +       q[ 9]  + R64_2(q[10])
+               +       q[11]  + R64_3(q[12]) +       q[13]  + R64_4(q[14])
+               +       q[15]  + R64_5(q[16]) +       q[17]  + R64_6(q[18])
+               +       q[19]  + R64_7(q[20]) + S64_4(q[21]) + S64_5(q[22]);
+/* expand_2( 8) */
+       q[24] = 
+               ((  ROTL64(((uint64_t*)m)[ 8], 9) 
+                 + ROTL64(((uint64_t*)m)[11], 12) 
+                 - ROTL64(((uint64_t*)m)[ 2], 3) 
+                 + 0x7ffffffffffffff8ULL 
+                )^ ((uint64_t*)h)[15] 
+               )
+               +       q[ 8]  + R64_1(q[ 9]) +       q[10]  + R64_2(q[11])
+               +       q[12]  + R64_3(q[13]) +       q[14]  + R64_4(q[15])
+               +       q[16]  + R64_5(q[17]) +       q[18]  + R64_6(q[19])
+               +       q[20]  + R64_7(q[21]) + S64_4(q[22]) + S64_5(q[23]);
+/* expand_2( 9) */
+       q[25] = 
+               ((  ROTL64(((uint64_t*)m)[ 9], 10) 
+                 + ROTL64(((uint64_t*)m)[12], 13) 
+                 - ROTL64(((uint64_t*)m)[ 3], 4) 
+                 + 0x855555555555554dULL 
+                )^ ((uint64_t*)h)[ 0] 
+               )
+               +       q[ 9]  + R64_1(q[10]) +       q[11]  + R64_2(q[12])
+               +       q[13]  + R64_3(q[14]) +       q[15]  + R64_4(q[16])
+               +       q[17]  + R64_5(q[18]) +       q[19]  + R64_6(q[20])
+               +       q[21]  + R64_7(q[22]) + S64_4(q[23]) + S64_5(q[24]);
+/* expand_2(10) */
+       q[26] = 
+               ((  ROTL64(((uint64_t*)m)[10], 11) 
+                 + ROTL64(((uint64_t*)m)[13], 14) 
+                 - ROTL64(((uint64_t*)m)[ 4], 5) 
+                 + 0x8aaaaaaaaaaaaaa2ULL 
+                )^ ((uint64_t*)h)[ 1] 
+               )
+               +       q[10]  + R64_1(q[11]) +       q[12]  + R64_2(q[13])
+               +       q[14]  + R64_3(q[15]) +       q[16]  + R64_4(q[17])
+               +       q[18]  + R64_5(q[19]) +       q[20]  + R64_6(q[21])
+               +       q[22]  + R64_7(q[23]) + S64_4(q[24]) + S64_5(q[25]);
+/* expand_2(11) */
+       q[27] = 
+               ((  ROTL64(((uint64_t*)m)[11], 12) 
+                 + ROTL64(((uint64_t*)m)[14], 15) 
+                 - ROTL64(((uint64_t*)m)[ 5], 6) 
+                 + 0x8ffffffffffffff7ULL 
+                )^ ((uint64_t*)h)[ 2] 
+               )
+               +       q[11]  + R64_1(q[12]) +       q[13]  + R64_2(q[14])
+               +       q[15]  + R64_3(q[16]) +       q[17]  + R64_4(q[18])
+               +       q[19]  + R64_5(q[20]) +       q[21]  + R64_6(q[22])
+               +       q[23]  + R64_7(q[24]) + S64_4(q[25]) + S64_5(q[26]);
+/* expand_2(12) */
+       q[28] = 
+               ((  ROTL64(((uint64_t*)m)[12], 13) 
+                 + ROTL64(((uint64_t*)m)[15], 16) 
+                 - ROTL64(((uint64_t*)m)[ 6], 7) 
+                 + 0x955555555555554cULL 
+                )^ ((uint64_t*)h)[ 3] 
+               )
+               +       q[12]  + R64_1(q[13]) +       q[14]  + R64_2(q[15])
+               +       q[16]  + R64_3(q[17]) +       q[18]  + R64_4(q[19])
+               +       q[20]  + R64_5(q[21]) +       q[22]  + R64_6(q[23])
+               +       q[24]  + R64_7(q[25]) + S64_4(q[26]) + S64_5(q[27]);
+/* expand_2(13) */
+       q[29] = 
+               ((  ROTL64(((uint64_t*)m)[13], 14) 
+                 + ROTL64(((uint64_t*)m)[ 0], 1) 
+                 - ROTL64(((uint64_t*)m)[ 7], 8) 
+                 + 0x9aaaaaaaaaaaaaa1ULL 
+                )^ ((uint64_t*)h)[ 4] 
+               )
+               +       q[13]  + R64_1(q[14]) +       q[15]  + R64_2(q[16])
+               +       q[17]  + R64_3(q[18]) +       q[19]  + R64_4(q[20])
+               +       q[21]  + R64_5(q[22]) +       q[23]  + R64_6(q[24])
+               +       q[25]  + R64_7(q[26]) + S64_4(q[27]) + S64_5(q[28]);
+/* expand_2(14) */
+       q[30] = 
+               ((  ROTL64(((uint64_t*)m)[14], 15) 
+                 + ROTL64(((uint64_t*)m)[ 1], 2) 
+                 - ROTL64(((uint64_t*)m)[ 8], 9) 
+                 + 0x9ffffffffffffff6ULL 
+                )^ ((uint64_t*)h)[ 5] 
+               )
+               +       q[14]  + R64_1(q[15]) +       q[16]  + R64_2(q[17])
+               +       q[18]  + R64_3(q[19]) +       q[20]  + R64_4(q[21])
+               +       q[22]  + R64_5(q[23]) +       q[24]  + R64_6(q[25])
+               +       q[26]  + R64_7(q[27]) + S64_4(q[28]) + S64_5(q[29]);
+/* expand_2(15) */
+       q[31] = 
+               ((  ROTL64(((uint64_t*)m)[15], 16) 
+                 + ROTL64(((uint64_t*)m)[ 2], 3) 
+                 - ROTL64(((uint64_t*)m)[ 9], 10) 
+                 + 0xa55555555555554bULL 
+                )^ ((uint64_t*)h)[ 6] 
+               )
+               +       q[15]  + R64_1(q[16]) +       q[17]  + R64_2(q[18])
+               +       q[19]  + R64_3(q[20]) +       q[21]  + R64_4(q[22])
+               +       q[23]  + R64_5(q[24]) +       q[25]  + R64_6(q[26])
+               +       q[27]  + R64_7(q[28]) + S64_4(q[29]) + S64_5(q[30]);
+}
+
+/* END of automatic generated code */
+