Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(12114)

Side by Side Diff: Modules/_sha3/kcp/KeccakP-1600-unrolling.macros

Issue 16113: Add SHA-3 (Keccak) support
Patch Set: Created 3 years ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h ('k') | Modules/_sha3/kcp/KeccakSponge.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni,
3 Joan Daemen, Michaƫl Peeters, Gilles Van Assche and Ronny Van Keer, hereby
4 denoted as "the implementer".
5
6 For more information, feedback or questions, please refer to our websites:
7 http://keccak.noekeon.org/
8 http://keyak.noekeon.org/
9 http://ketje.noekeon.org/
10
11 To the extent possible under law, the implementer has waived all copyright
12 and related or neighboring rights to the source code in this file.
13 http://creativecommons.org/publicdomain/zero/1.0/
14 */
15
16 #if (defined(FullUnrolling))
17 #define rounds24 \
18 prepareTheta \
19 thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
20 thetaRhoPiChiIotaPrepareTheta( 1, E, A) \
21 thetaRhoPiChiIotaPrepareTheta( 2, A, E) \
22 thetaRhoPiChiIotaPrepareTheta( 3, E, A) \
23 thetaRhoPiChiIotaPrepareTheta( 4, A, E) \
24 thetaRhoPiChiIotaPrepareTheta( 5, E, A) \
25 thetaRhoPiChiIotaPrepareTheta( 6, A, E) \
26 thetaRhoPiChiIotaPrepareTheta( 7, E, A) \
27 thetaRhoPiChiIotaPrepareTheta( 8, A, E) \
28 thetaRhoPiChiIotaPrepareTheta( 9, E, A) \
29 thetaRhoPiChiIotaPrepareTheta(10, A, E) \
30 thetaRhoPiChiIotaPrepareTheta(11, E, A) \
31 thetaRhoPiChiIotaPrepareTheta(12, A, E) \
32 thetaRhoPiChiIotaPrepareTheta(13, E, A) \
33 thetaRhoPiChiIotaPrepareTheta(14, A, E) \
34 thetaRhoPiChiIotaPrepareTheta(15, E, A) \
35 thetaRhoPiChiIotaPrepareTheta(16, A, E) \
36 thetaRhoPiChiIotaPrepareTheta(17, E, A) \
37 thetaRhoPiChiIotaPrepareTheta(18, A, E) \
38 thetaRhoPiChiIotaPrepareTheta(19, E, A) \
39 thetaRhoPiChiIotaPrepareTheta(20, A, E) \
40 thetaRhoPiChiIotaPrepareTheta(21, E, A) \
41 thetaRhoPiChiIotaPrepareTheta(22, A, E) \
42 thetaRhoPiChiIota(23, E, A) \
43
44 #define rounds12 \
45 prepareTheta \
46 thetaRhoPiChiIotaPrepareTheta(12, A, E) \
47 thetaRhoPiChiIotaPrepareTheta(13, E, A) \
48 thetaRhoPiChiIotaPrepareTheta(14, A, E) \
49 thetaRhoPiChiIotaPrepareTheta(15, E, A) \
50 thetaRhoPiChiIotaPrepareTheta(16, A, E) \
51 thetaRhoPiChiIotaPrepareTheta(17, E, A) \
52 thetaRhoPiChiIotaPrepareTheta(18, A, E) \
53 thetaRhoPiChiIotaPrepareTheta(19, E, A) \
54 thetaRhoPiChiIotaPrepareTheta(20, A, E) \
55 thetaRhoPiChiIotaPrepareTheta(21, E, A) \
56 thetaRhoPiChiIotaPrepareTheta(22, A, E) \
57 thetaRhoPiChiIota(23, E, A) \
58
59 #elif (Unrolling == 12)
60 #define rounds24 \
61 prepareTheta \
62 for(i=0; i<24; i+=12) { \
63 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
64 thetaRhoPiChiIotaPrepareTheta(i+ 1, E, A) \
65 thetaRhoPiChiIotaPrepareTheta(i+ 2, A, E) \
66 thetaRhoPiChiIotaPrepareTheta(i+ 3, E, A) \
67 thetaRhoPiChiIotaPrepareTheta(i+ 4, A, E) \
68 thetaRhoPiChiIotaPrepareTheta(i+ 5, E, A) \
69 thetaRhoPiChiIotaPrepareTheta(i+ 6, A, E) \
70 thetaRhoPiChiIotaPrepareTheta(i+ 7, E, A) \
71 thetaRhoPiChiIotaPrepareTheta(i+ 8, A, E) \
72 thetaRhoPiChiIotaPrepareTheta(i+ 9, E, A) \
73 thetaRhoPiChiIotaPrepareTheta(i+10, A, E) \
74 thetaRhoPiChiIotaPrepareTheta(i+11, E, A) \
75 } \
76
77 #define rounds12 \
78 prepareTheta \
79 thetaRhoPiChiIotaPrepareTheta(12, A, E) \
80 thetaRhoPiChiIotaPrepareTheta(13, E, A) \
81 thetaRhoPiChiIotaPrepareTheta(14, A, E) \
82 thetaRhoPiChiIotaPrepareTheta(15, E, A) \
83 thetaRhoPiChiIotaPrepareTheta(16, A, E) \
84 thetaRhoPiChiIotaPrepareTheta(17, E, A) \
85 thetaRhoPiChiIotaPrepareTheta(18, A, E) \
86 thetaRhoPiChiIotaPrepareTheta(19, E, A) \
87 thetaRhoPiChiIotaPrepareTheta(20, A, E) \
88 thetaRhoPiChiIotaPrepareTheta(21, E, A) \
89 thetaRhoPiChiIotaPrepareTheta(22, A, E) \
90 thetaRhoPiChiIota(23, E, A) \
91
92 #elif (Unrolling == 6)
93 #define rounds24 \
94 prepareTheta \
95 for(i=0; i<24; i+=6) { \
96 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
97 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
98 thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \
99 thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \
100 thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \
101 thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \
102 } \
103
104 #define rounds12 \
105 prepareTheta \
106 for(i=12; i<24; i+=6) { \
107 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
108 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
109 thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \
110 thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \
111 thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \
112 thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \
113 } \
114
115 #elif (Unrolling == 4)
116 #define rounds24 \
117 prepareTheta \
118 for(i=0; i<24; i+=4) { \
119 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
120 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
121 thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \
122 thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \
123 } \
124
125 #define rounds12 \
126 prepareTheta \
127 for(i=12; i<24; i+=4) { \
128 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
129 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
130 thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \
131 thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \
132 } \
133
134 #elif (Unrolling == 3)
135 #define rounds24 \
136 prepareTheta \
137 for(i=0; i<24; i+=3) { \
138 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
139 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
140 thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \
141 copyStateVariables(A, E) \
142 } \
143
144 #define rounds12 \
145 prepareTheta \
146 for(i=12; i<24; i+=3) { \
147 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
148 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
149 thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \
150 copyStateVariables(A, E) \
151 } \
152
153 #elif (Unrolling == 2)
154 #define rounds24 \
155 prepareTheta \
156 for(i=0; i<24; i+=2) { \
157 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
158 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
159 } \
160
161 #define rounds12 \
162 prepareTheta \
163 for(i=12; i<24; i+=2) { \
164 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
165 thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \
166 } \
167
168 #elif (Unrolling == 1)
169 #define rounds24 \
170 prepareTheta \
171 for(i=0; i<24; i++) { \
172 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
173 copyStateVariables(A, E) \
174 } \
175
176 #define rounds12 \
177 prepareTheta \
178 for(i=12; i<24; i++) { \
179 thetaRhoPiChiIotaPrepareTheta(i , A, E) \
180 copyStateVariables(A, E) \
181 } \
182
183 #else
184 #error "Unrolling is not correctly specified!"
185 #endif
OLDNEW
« no previous file with comments | « Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h ('k') | Modules/_sha3/kcp/KeccakSponge.c » ('j') | no next file with comments »

RSS Feeds Recent Issues | This issue
This is Rietveld 894c83f36cb7+