diff options
Diffstat (limited to 'libbb/hash_md5_sha256_x86-64_shaNI.S')
-rw-r--r-- | libbb/hash_md5_sha256_x86-64_shaNI.S | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/libbb/hash_md5_sha256_x86-64_shaNI.S b/libbb/hash_md5_sha256_x86-64_shaNI.S index 9578441f8..082ceafe4 100644 --- a/libbb/hash_md5_sha256_x86-64_shaNI.S +++ b/libbb/hash_md5_sha256_x86-64_shaNI.S | |||
@@ -38,8 +38,8 @@ | |||
38 | 38 | ||
39 | #define XMMTMP %xmm7 | 39 | #define XMMTMP %xmm7 |
40 | 40 | ||
41 | #define ABEF_SAVE %xmm9 | 41 | #define SAVE0 %xmm8 |
42 | #define CDGH_SAVE %xmm10 | 42 | #define SAVE1 %xmm9 |
43 | 43 | ||
44 | #define SHUF(a,b,c,d) $(a+(b<<2)+(c<<4)+(d<<6)) | 44 | #define SHUF(a,b,c,d) $(a+(b<<2)+(c<<4)+(d<<6)) |
45 | 45 | ||
@@ -59,26 +59,26 @@ sha256_process_block64_shaNI: | |||
59 | leaq K256+8*16(%rip), SHA256CONSTANTS | 59 | leaq K256+8*16(%rip), SHA256CONSTANTS |
60 | 60 | ||
61 | /* Save hash values for addition after rounds */ | 61 | /* Save hash values for addition after rounds */ |
62 | mova128 STATE0, ABEF_SAVE | 62 | mova128 STATE0, SAVE0 |
63 | mova128 STATE1, CDGH_SAVE | 63 | mova128 STATE1, SAVE1 |
64 | 64 | ||
65 | /* Rounds 0-3 */ | 65 | /* Rounds 0-3 */ |
66 | movu128 0*16(DATA_PTR), MSG | 66 | movu128 0*16(DATA_PTR), MSG |
67 | pshufb XMMTMP, MSG | 67 | pshufb XMMTMP, MSG |
68 | mova128 MSG, MSGTMP0 | 68 | mova128 MSG, MSGTMP0 |
69 | paddd 0*16-8*16(SHA256CONSTANTS), MSG | 69 | paddd 0*16-8*16(SHA256CONSTANTS), MSG |
70 | sha256rnds2 STATE0, STATE1 | 70 | sha256rnds2 MSG, STATE0, STATE1 |
71 | shuf128_32 $0x0E, MSG, MSG | 71 | shuf128_32 $0x0E, MSG, MSG |
72 | sha256rnds2 STATE1, STATE0 | 72 | sha256rnds2 MSG, STATE1, STATE0 |
73 | 73 | ||
74 | /* Rounds 4-7 */ | 74 | /* Rounds 4-7 */ |
75 | movu128 1*16(DATA_PTR), MSG | 75 | movu128 1*16(DATA_PTR), MSG |
76 | pshufb XMMTMP, MSG | 76 | pshufb XMMTMP, MSG |
77 | mova128 MSG, MSGTMP1 | 77 | mova128 MSG, MSGTMP1 |
78 | paddd 1*16-8*16(SHA256CONSTANTS), MSG | 78 | paddd 1*16-8*16(SHA256CONSTANTS), MSG |
79 | sha256rnds2 STATE0, STATE1 | 79 | sha256rnds2 MSG, STATE0, STATE1 |
80 | shuf128_32 $0x0E, MSG, MSG | 80 | shuf128_32 $0x0E, MSG, MSG |
81 | sha256rnds2 STATE1, STATE0 | 81 | sha256rnds2 MSG, STATE1, STATE0 |
82 | sha256msg1 MSGTMP1, MSGTMP0 | 82 | sha256msg1 MSGTMP1, MSGTMP0 |
83 | 83 | ||
84 | /* Rounds 8-11 */ | 84 | /* Rounds 8-11 */ |
@@ -86,9 +86,9 @@ sha256_process_block64_shaNI: | |||
86 | pshufb XMMTMP, MSG | 86 | pshufb XMMTMP, MSG |
87 | mova128 MSG, MSGTMP2 | 87 | mova128 MSG, MSGTMP2 |
88 | paddd 2*16-8*16(SHA256CONSTANTS), MSG | 88 | paddd 2*16-8*16(SHA256CONSTANTS), MSG |
89 | sha256rnds2 STATE0, STATE1 | 89 | sha256rnds2 MSG, STATE0, STATE1 |
90 | shuf128_32 $0x0E, MSG, MSG | 90 | shuf128_32 $0x0E, MSG, MSG |
91 | sha256rnds2 STATE1, STATE0 | 91 | sha256rnds2 MSG, STATE1, STATE0 |
92 | sha256msg1 MSGTMP2, MSGTMP1 | 92 | sha256msg1 MSGTMP2, MSGTMP1 |
93 | 93 | ||
94 | /* Rounds 12-15 */ | 94 | /* Rounds 12-15 */ |
@@ -97,155 +97,155 @@ sha256_process_block64_shaNI: | |||
97 | /* ...to here */ | 97 | /* ...to here */ |
98 | mova128 MSG, MSGTMP3 | 98 | mova128 MSG, MSGTMP3 |
99 | paddd 3*16-8*16(SHA256CONSTANTS), MSG | 99 | paddd 3*16-8*16(SHA256CONSTANTS), MSG |
100 | sha256rnds2 STATE0, STATE1 | 100 | sha256rnds2 MSG, STATE0, STATE1 |
101 | mova128 MSGTMP3, XMMTMP | 101 | mova128 MSGTMP3, XMMTMP |
102 | palignr $4, MSGTMP2, XMMTMP | 102 | palignr $4, MSGTMP2, XMMTMP |
103 | paddd XMMTMP, MSGTMP0 | 103 | paddd XMMTMP, MSGTMP0 |
104 | sha256msg2 MSGTMP3, MSGTMP0 | 104 | sha256msg2 MSGTMP3, MSGTMP0 |
105 | shuf128_32 $0x0E, MSG, MSG | 105 | shuf128_32 $0x0E, MSG, MSG |
106 | sha256rnds2 STATE1, STATE0 | 106 | sha256rnds2 MSG, STATE1, STATE0 |
107 | sha256msg1 MSGTMP3, MSGTMP2 | 107 | sha256msg1 MSGTMP3, MSGTMP2 |
108 | 108 | ||
109 | /* Rounds 16-19 */ | 109 | /* Rounds 16-19 */ |
110 | mova128 MSGTMP0, MSG | 110 | mova128 MSGTMP0, MSG |
111 | paddd 4*16-8*16(SHA256CONSTANTS), MSG | 111 | paddd 4*16-8*16(SHA256CONSTANTS), MSG |
112 | sha256rnds2 STATE0, STATE1 | 112 | sha256rnds2 MSG, STATE0, STATE1 |
113 | mova128 MSGTMP0, XMMTMP | 113 | mova128 MSGTMP0, XMMTMP |
114 | palignr $4, MSGTMP3, XMMTMP | 114 | palignr $4, MSGTMP3, XMMTMP |
115 | paddd XMMTMP, MSGTMP1 | 115 | paddd XMMTMP, MSGTMP1 |
116 | sha256msg2 MSGTMP0, MSGTMP1 | 116 | sha256msg2 MSGTMP0, MSGTMP1 |
117 | shuf128_32 $0x0E, MSG, MSG | 117 | shuf128_32 $0x0E, MSG, MSG |
118 | sha256rnds2 STATE1, STATE0 | 118 | sha256rnds2 MSG, STATE1, STATE0 |
119 | sha256msg1 MSGTMP0, MSGTMP3 | 119 | sha256msg1 MSGTMP0, MSGTMP3 |
120 | 120 | ||
121 | /* Rounds 20-23 */ | 121 | /* Rounds 20-23 */ |
122 | mova128 MSGTMP1, MSG | 122 | mova128 MSGTMP1, MSG |
123 | paddd 5*16-8*16(SHA256CONSTANTS), MSG | 123 | paddd 5*16-8*16(SHA256CONSTANTS), MSG |
124 | sha256rnds2 STATE0, STATE1 | 124 | sha256rnds2 MSG, STATE0, STATE1 |
125 | mova128 MSGTMP1, XMMTMP | 125 | mova128 MSGTMP1, XMMTMP |
126 | palignr $4, MSGTMP0, XMMTMP | 126 | palignr $4, MSGTMP0, XMMTMP |
127 | paddd XMMTMP, MSGTMP2 | 127 | paddd XMMTMP, MSGTMP2 |
128 | sha256msg2 MSGTMP1, MSGTMP2 | 128 | sha256msg2 MSGTMP1, MSGTMP2 |
129 | shuf128_32 $0x0E, MSG, MSG | 129 | shuf128_32 $0x0E, MSG, MSG |
130 | sha256rnds2 STATE1, STATE0 | 130 | sha256rnds2 MSG, STATE1, STATE0 |
131 | sha256msg1 MSGTMP1, MSGTMP0 | 131 | sha256msg1 MSGTMP1, MSGTMP0 |
132 | 132 | ||
133 | /* Rounds 24-27 */ | 133 | /* Rounds 24-27 */ |
134 | mova128 MSGTMP2, MSG | 134 | mova128 MSGTMP2, MSG |
135 | paddd 6*16-8*16(SHA256CONSTANTS), MSG | 135 | paddd 6*16-8*16(SHA256CONSTANTS), MSG |
136 | sha256rnds2 STATE0, STATE1 | 136 | sha256rnds2 MSG, STATE0, STATE1 |
137 | mova128 MSGTMP2, XMMTMP | 137 | mova128 MSGTMP2, XMMTMP |
138 | palignr $4, MSGTMP1, XMMTMP | 138 | palignr $4, MSGTMP1, XMMTMP |
139 | paddd XMMTMP, MSGTMP3 | 139 | paddd XMMTMP, MSGTMP3 |
140 | sha256msg2 MSGTMP2, MSGTMP3 | 140 | sha256msg2 MSGTMP2, MSGTMP3 |
141 | shuf128_32 $0x0E, MSG, MSG | 141 | shuf128_32 $0x0E, MSG, MSG |
142 | sha256rnds2 STATE1, STATE0 | 142 | sha256rnds2 MSG, STATE1, STATE0 |
143 | sha256msg1 MSGTMP2, MSGTMP1 | 143 | sha256msg1 MSGTMP2, MSGTMP1 |
144 | 144 | ||
145 | /* Rounds 28-31 */ | 145 | /* Rounds 28-31 */ |
146 | mova128 MSGTMP3, MSG | 146 | mova128 MSGTMP3, MSG |
147 | paddd 7*16-8*16(SHA256CONSTANTS), MSG | 147 | paddd 7*16-8*16(SHA256CONSTANTS), MSG |
148 | sha256rnds2 STATE0, STATE1 | 148 | sha256rnds2 MSG, STATE0, STATE1 |
149 | mova128 MSGTMP3, XMMTMP | 149 | mova128 MSGTMP3, XMMTMP |
150 | palignr $4, MSGTMP2, XMMTMP | 150 | palignr $4, MSGTMP2, XMMTMP |
151 | paddd XMMTMP, MSGTMP0 | 151 | paddd XMMTMP, MSGTMP0 |
152 | sha256msg2 MSGTMP3, MSGTMP0 | 152 | sha256msg2 MSGTMP3, MSGTMP0 |
153 | shuf128_32 $0x0E, MSG, MSG | 153 | shuf128_32 $0x0E, MSG, MSG |
154 | sha256rnds2 STATE1, STATE0 | 154 | sha256rnds2 MSG, STATE1, STATE0 |
155 | sha256msg1 MSGTMP3, MSGTMP2 | 155 | sha256msg1 MSGTMP3, MSGTMP2 |
156 | 156 | ||
157 | /* Rounds 32-35 */ | 157 | /* Rounds 32-35 */ |
158 | mova128 MSGTMP0, MSG | 158 | mova128 MSGTMP0, MSG |
159 | paddd 8*16-8*16(SHA256CONSTANTS), MSG | 159 | paddd 8*16-8*16(SHA256CONSTANTS), MSG |
160 | sha256rnds2 STATE0, STATE1 | 160 | sha256rnds2 MSG, STATE0, STATE1 |
161 | mova128 MSGTMP0, XMMTMP | 161 | mova128 MSGTMP0, XMMTMP |
162 | palignr $4, MSGTMP3, XMMTMP | 162 | palignr $4, MSGTMP3, XMMTMP |
163 | paddd XMMTMP, MSGTMP1 | 163 | paddd XMMTMP, MSGTMP1 |
164 | sha256msg2 MSGTMP0, MSGTMP1 | 164 | sha256msg2 MSGTMP0, MSGTMP1 |
165 | shuf128_32 $0x0E, MSG, MSG | 165 | shuf128_32 $0x0E, MSG, MSG |
166 | sha256rnds2 STATE1, STATE0 | 166 | sha256rnds2 MSG, STATE1, STATE0 |
167 | sha256msg1 MSGTMP0, MSGTMP3 | 167 | sha256msg1 MSGTMP0, MSGTMP3 |
168 | 168 | ||
169 | /* Rounds 36-39 */ | 169 | /* Rounds 36-39 */ |
170 | mova128 MSGTMP1, MSG | 170 | mova128 MSGTMP1, MSG |
171 | paddd 9*16-8*16(SHA256CONSTANTS), MSG | 171 | paddd 9*16-8*16(SHA256CONSTANTS), MSG |
172 | sha256rnds2 STATE0, STATE1 | 172 | sha256rnds2 MSG, STATE0, STATE1 |
173 | mova128 MSGTMP1, XMMTMP | 173 | mova128 MSGTMP1, XMMTMP |
174 | palignr $4, MSGTMP0, XMMTMP | 174 | palignr $4, MSGTMP0, XMMTMP |
175 | paddd XMMTMP, MSGTMP2 | 175 | paddd XMMTMP, MSGTMP2 |
176 | sha256msg2 MSGTMP1, MSGTMP2 | 176 | sha256msg2 MSGTMP1, MSGTMP2 |
177 | shuf128_32 $0x0E, MSG, MSG | 177 | shuf128_32 $0x0E, MSG, MSG |
178 | sha256rnds2 STATE1, STATE0 | 178 | sha256rnds2 MSG, STATE1, STATE0 |
179 | sha256msg1 MSGTMP1, MSGTMP0 | 179 | sha256msg1 MSGTMP1, MSGTMP0 |
180 | 180 | ||
181 | /* Rounds 40-43 */ | 181 | /* Rounds 40-43 */ |
182 | mova128 MSGTMP2, MSG | 182 | mova128 MSGTMP2, MSG |
183 | paddd 10*16-8*16(SHA256CONSTANTS), MSG | 183 | paddd 10*16-8*16(SHA256CONSTANTS), MSG |
184 | sha256rnds2 STATE0, STATE1 | 184 | sha256rnds2 MSG, STATE0, STATE1 |
185 | mova128 MSGTMP2, XMMTMP | 185 | mova128 MSGTMP2, XMMTMP |
186 | palignr $4, MSGTMP1, XMMTMP | 186 | palignr $4, MSGTMP1, XMMTMP |
187 | paddd XMMTMP, MSGTMP3 | 187 | paddd XMMTMP, MSGTMP3 |
188 | sha256msg2 MSGTMP2, MSGTMP3 | 188 | sha256msg2 MSGTMP2, MSGTMP3 |
189 | shuf128_32 $0x0E, MSG, MSG | 189 | shuf128_32 $0x0E, MSG, MSG |
190 | sha256rnds2 STATE1, STATE0 | 190 | sha256rnds2 MSG, STATE1, STATE0 |
191 | sha256msg1 MSGTMP2, MSGTMP1 | 191 | sha256msg1 MSGTMP2, MSGTMP1 |
192 | 192 | ||
193 | /* Rounds 44-47 */ | 193 | /* Rounds 44-47 */ |
194 | mova128 MSGTMP3, MSG | 194 | mova128 MSGTMP3, MSG |
195 | paddd 11*16-8*16(SHA256CONSTANTS), MSG | 195 | paddd 11*16-8*16(SHA256CONSTANTS), MSG |
196 | sha256rnds2 STATE0, STATE1 | 196 | sha256rnds2 MSG, STATE0, STATE1 |
197 | mova128 MSGTMP3, XMMTMP | 197 | mova128 MSGTMP3, XMMTMP |
198 | palignr $4, MSGTMP2, XMMTMP | 198 | palignr $4, MSGTMP2, XMMTMP |
199 | paddd XMMTMP, MSGTMP0 | 199 | paddd XMMTMP, MSGTMP0 |
200 | sha256msg2 MSGTMP3, MSGTMP0 | 200 | sha256msg2 MSGTMP3, MSGTMP0 |
201 | shuf128_32 $0x0E, MSG, MSG | 201 | shuf128_32 $0x0E, MSG, MSG |
202 | sha256rnds2 STATE1, STATE0 | 202 | sha256rnds2 MSG, STATE1, STATE0 |
203 | sha256msg1 MSGTMP3, MSGTMP2 | 203 | sha256msg1 MSGTMP3, MSGTMP2 |
204 | 204 | ||
205 | /* Rounds 48-51 */ | 205 | /* Rounds 48-51 */ |
206 | mova128 MSGTMP0, MSG | 206 | mova128 MSGTMP0, MSG |
207 | paddd 12*16-8*16(SHA256CONSTANTS), MSG | 207 | paddd 12*16-8*16(SHA256CONSTANTS), MSG |
208 | sha256rnds2 STATE0, STATE1 | 208 | sha256rnds2 MSG, STATE0, STATE1 |
209 | mova128 MSGTMP0, XMMTMP | 209 | mova128 MSGTMP0, XMMTMP |
210 | palignr $4, MSGTMP3, XMMTMP | 210 | palignr $4, MSGTMP3, XMMTMP |
211 | paddd XMMTMP, MSGTMP1 | 211 | paddd XMMTMP, MSGTMP1 |
212 | sha256msg2 MSGTMP0, MSGTMP1 | 212 | sha256msg2 MSGTMP0, MSGTMP1 |
213 | shuf128_32 $0x0E, MSG, MSG | 213 | shuf128_32 $0x0E, MSG, MSG |
214 | sha256rnds2 STATE1, STATE0 | 214 | sha256rnds2 MSG, STATE1, STATE0 |
215 | sha256msg1 MSGTMP0, MSGTMP3 | 215 | sha256msg1 MSGTMP0, MSGTMP3 |
216 | 216 | ||
217 | /* Rounds 52-55 */ | 217 | /* Rounds 52-55 */ |
218 | mova128 MSGTMP1, MSG | 218 | mova128 MSGTMP1, MSG |
219 | paddd 13*16-8*16(SHA256CONSTANTS), MSG | 219 | paddd 13*16-8*16(SHA256CONSTANTS), MSG |
220 | sha256rnds2 STATE0, STATE1 | 220 | sha256rnds2 MSG, STATE0, STATE1 |
221 | mova128 MSGTMP1, XMMTMP | 221 | mova128 MSGTMP1, XMMTMP |
222 | palignr $4, MSGTMP0, XMMTMP | 222 | palignr $4, MSGTMP0, XMMTMP |
223 | paddd XMMTMP, MSGTMP2 | 223 | paddd XMMTMP, MSGTMP2 |
224 | sha256msg2 MSGTMP1, MSGTMP2 | 224 | sha256msg2 MSGTMP1, MSGTMP2 |
225 | shuf128_32 $0x0E, MSG, MSG | 225 | shuf128_32 $0x0E, MSG, MSG |
226 | sha256rnds2 STATE1, STATE0 | 226 | sha256rnds2 MSG, STATE1, STATE0 |
227 | 227 | ||
228 | /* Rounds 56-59 */ | 228 | /* Rounds 56-59 */ |
229 | mova128 MSGTMP2, MSG | 229 | mova128 MSGTMP2, MSG |
230 | paddd 14*16-8*16(SHA256CONSTANTS), MSG | 230 | paddd 14*16-8*16(SHA256CONSTANTS), MSG |
231 | sha256rnds2 STATE0, STATE1 | 231 | sha256rnds2 MSG, STATE0, STATE1 |
232 | mova128 MSGTMP2, XMMTMP | 232 | mova128 MSGTMP2, XMMTMP |
233 | palignr $4, MSGTMP1, XMMTMP | 233 | palignr $4, MSGTMP1, XMMTMP |
234 | paddd XMMTMP, MSGTMP3 | 234 | paddd XMMTMP, MSGTMP3 |
235 | sha256msg2 MSGTMP2, MSGTMP3 | 235 | sha256msg2 MSGTMP2, MSGTMP3 |
236 | shuf128_32 $0x0E, MSG, MSG | 236 | shuf128_32 $0x0E, MSG, MSG |
237 | sha256rnds2 STATE1, STATE0 | 237 | sha256rnds2 MSG, STATE1, STATE0 |
238 | 238 | ||
239 | /* Rounds 60-63 */ | 239 | /* Rounds 60-63 */ |
240 | mova128 MSGTMP3, MSG | 240 | mova128 MSGTMP3, MSG |
241 | paddd 15*16-8*16(SHA256CONSTANTS), MSG | 241 | paddd 15*16-8*16(SHA256CONSTANTS), MSG |
242 | sha256rnds2 STATE0, STATE1 | 242 | sha256rnds2 MSG, STATE0, STATE1 |
243 | shuf128_32 $0x0E, MSG, MSG | 243 | shuf128_32 $0x0E, MSG, MSG |
244 | sha256rnds2 STATE1, STATE0 | 244 | sha256rnds2 MSG, STATE1, STATE0 |
245 | 245 | ||
246 | /* Add current hash values with previously saved */ | 246 | /* Add current hash values with previously saved */ |
247 | paddd ABEF_SAVE, STATE0 | 247 | paddd SAVE0, STATE0 |
248 | paddd CDGH_SAVE, STATE1 | 248 | paddd SAVE1, STATE1 |
249 | 249 | ||
250 | /* Write hash values back in the correct order */ | 250 | /* Write hash values back in the correct order */ |
251 | mova128 STATE0, XMMTMP | 251 | mova128 STATE0, XMMTMP |