1# This file is generated from a similarly-named Perl script in the BoringSSL 2# source tree. Do not edit by hand. 3 4#if defined(__has_feature) 5#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) 6#define OPENSSL_NO_ASM 7#endif 8#endif 9 10#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) 11#if defined(BORINGSSL_PREFIX) 12#include <boringssl_prefix_symbols_asm.h> 13#endif 14.text 15 16 17 18 19 20 21.globl _gcm_gmult_ssse3 22.private_extern _gcm_gmult_ssse3 23.p2align 4 24_gcm_gmult_ssse3: 25 26L$gmult_seh_begin: 27 movdqu (%rdi),%xmm0 28 movdqa L$reverse_bytes(%rip),%xmm10 29 movdqa L$low4_mask(%rip),%xmm2 30 31 32.byte 102,65,15,56,0,194 33 34 35 movdqa %xmm2,%xmm1 36 pandn %xmm0,%xmm1 37 psrld $4,%xmm1 38 pand %xmm2,%xmm0 39 40 41 42 43 pxor %xmm2,%xmm2 44 pxor %xmm3,%xmm3 45 movq $5,%rax 46L$oop_row_1: 47 movdqa (%rsi),%xmm4 48 leaq 16(%rsi),%rsi 49 50 51 movdqa %xmm2,%xmm6 52.byte 102,15,58,15,243,1 53 movdqa %xmm6,%xmm3 54 psrldq $1,%xmm2 55 56 57 58 59 movdqa %xmm4,%xmm5 60.byte 102,15,56,0,224 61.byte 102,15,56,0,233 62 63 64 pxor %xmm5,%xmm2 65 66 67 68 movdqa %xmm4,%xmm5 69 psllq $60,%xmm5 70 movdqa %xmm5,%xmm6 71 pslldq $8,%xmm6 72 pxor %xmm6,%xmm3 73 74 75 psrldq $8,%xmm5 76 pxor %xmm5,%xmm2 77 psrlq $4,%xmm4 78 pxor %xmm4,%xmm2 79 80 subq $1,%rax 81 jnz L$oop_row_1 82 83 84 85 pxor %xmm3,%xmm2 86 psrlq $1,%xmm3 87 pxor %xmm3,%xmm2 88 psrlq $1,%xmm3 89 pxor %xmm3,%xmm2 90 psrlq $5,%xmm3 91 pxor %xmm3,%xmm2 92 pxor %xmm3,%xmm3 93 movq $5,%rax 94L$oop_row_2: 95 movdqa (%rsi),%xmm4 96 leaq 16(%rsi),%rsi 97 98 99 movdqa %xmm2,%xmm6 100.byte 102,15,58,15,243,1 101 movdqa %xmm6,%xmm3 102 psrldq $1,%xmm2 103 104 105 106 107 movdqa %xmm4,%xmm5 108.byte 102,15,56,0,224 109.byte 102,15,56,0,233 110 111 112 pxor %xmm5,%xmm2 113 114 115 116 movdqa %xmm4,%xmm5 117 psllq $60,%xmm5 118 movdqa %xmm5,%xmm6 119 pslldq $8,%xmm6 120 pxor %xmm6,%xmm3 121 122 123 psrldq $8,%xmm5 124 pxor %xmm5,%xmm2 125 psrlq $4,%xmm4 126 pxor %xmm4,%xmm2 127 128 subq $1,%rax 129 jnz L$oop_row_2 130 131 132 133 pxor %xmm3,%xmm2 134 psrlq $1,%xmm3 135 pxor %xmm3,%xmm2 136 psrlq $1,%xmm3 137 pxor %xmm3,%xmm2 138 psrlq $5,%xmm3 139 pxor %xmm3,%xmm2 140 pxor %xmm3,%xmm3 141 movq $6,%rax 142L$oop_row_3: 143 movdqa (%rsi),%xmm4 144 leaq 16(%rsi),%rsi 145 146 147 movdqa %xmm2,%xmm6 148.byte 102,15,58,15,243,1 149 movdqa %xmm6,%xmm3 150 psrldq $1,%xmm2 151 152 153 154 155 movdqa %xmm4,%xmm5 156.byte 102,15,56,0,224 157.byte 102,15,56,0,233 158 159 160 pxor %xmm5,%xmm2 161 162 163 164 movdqa %xmm4,%xmm5 165 psllq $60,%xmm5 166 movdqa %xmm5,%xmm6 167 pslldq $8,%xmm6 168 pxor %xmm6,%xmm3 169 170 171 psrldq $8,%xmm5 172 pxor %xmm5,%xmm2 173 psrlq $4,%xmm4 174 pxor %xmm4,%xmm2 175 176 subq $1,%rax 177 jnz L$oop_row_3 178 179 180 181 pxor %xmm3,%xmm2 182 psrlq $1,%xmm3 183 pxor %xmm3,%xmm2 184 psrlq $1,%xmm3 185 pxor %xmm3,%xmm2 186 psrlq $5,%xmm3 187 pxor %xmm3,%xmm2 188 pxor %xmm3,%xmm3 189 190.byte 102,65,15,56,0,210 191 movdqu %xmm2,(%rdi) 192 193 194 pxor %xmm0,%xmm0 195 pxor %xmm1,%xmm1 196 pxor %xmm2,%xmm2 197 pxor %xmm3,%xmm3 198 pxor %xmm4,%xmm4 199 pxor %xmm5,%xmm5 200 pxor %xmm6,%xmm6 201 .byte 0xf3,0xc3 202L$gmult_seh_end: 203 204 205 206 207 208 209 210 211.globl _gcm_ghash_ssse3 212.private_extern _gcm_ghash_ssse3 213.p2align 4 214_gcm_ghash_ssse3: 215L$ghash_seh_begin: 216 217 movdqu (%rdi),%xmm0 218 movdqa L$reverse_bytes(%rip),%xmm10 219 movdqa L$low4_mask(%rip),%xmm11 220 221 222 andq $-16,%rcx 223 224 225 226.byte 102,65,15,56,0,194 227 228 229 pxor %xmm3,%xmm3 230L$oop_ghash: 231 232 movdqu (%rdx),%xmm1 233.byte 102,65,15,56,0,202 234 pxor %xmm1,%xmm0 235 236 237 movdqa %xmm11,%xmm1 238 pandn %xmm0,%xmm1 239 psrld $4,%xmm1 240 pand %xmm11,%xmm0 241 242 243 244 245 pxor %xmm2,%xmm2 246 247 movq $5,%rax 248L$oop_row_4: 249 movdqa (%rsi),%xmm4 250 leaq 16(%rsi),%rsi 251 252 253 movdqa %xmm2,%xmm6 254.byte 102,15,58,15,243,1 255 movdqa %xmm6,%xmm3 256 psrldq $1,%xmm2 257 258 259 260 261 movdqa %xmm4,%xmm5 262.byte 102,15,56,0,224 263.byte 102,15,56,0,233 264 265 266 pxor %xmm5,%xmm2 267 268 269 270 movdqa %xmm4,%xmm5 271 psllq $60,%xmm5 272 movdqa %xmm5,%xmm6 273 pslldq $8,%xmm6 274 pxor %xmm6,%xmm3 275 276 277 psrldq $8,%xmm5 278 pxor %xmm5,%xmm2 279 psrlq $4,%xmm4 280 pxor %xmm4,%xmm2 281 282 subq $1,%rax 283 jnz L$oop_row_4 284 285 286 287 pxor %xmm3,%xmm2 288 psrlq $1,%xmm3 289 pxor %xmm3,%xmm2 290 psrlq $1,%xmm3 291 pxor %xmm3,%xmm2 292 psrlq $5,%xmm3 293 pxor %xmm3,%xmm2 294 pxor %xmm3,%xmm3 295 movq $5,%rax 296L$oop_row_5: 297 movdqa (%rsi),%xmm4 298 leaq 16(%rsi),%rsi 299 300 301 movdqa %xmm2,%xmm6 302.byte 102,15,58,15,243,1 303 movdqa %xmm6,%xmm3 304 psrldq $1,%xmm2 305 306 307 308 309 movdqa %xmm4,%xmm5 310.byte 102,15,56,0,224 311.byte 102,15,56,0,233 312 313 314 pxor %xmm5,%xmm2 315 316 317 318 movdqa %xmm4,%xmm5 319 psllq $60,%xmm5 320 movdqa %xmm5,%xmm6 321 pslldq $8,%xmm6 322 pxor %xmm6,%xmm3 323 324 325 psrldq $8,%xmm5 326 pxor %xmm5,%xmm2 327 psrlq $4,%xmm4 328 pxor %xmm4,%xmm2 329 330 subq $1,%rax 331 jnz L$oop_row_5 332 333 334 335 pxor %xmm3,%xmm2 336 psrlq $1,%xmm3 337 pxor %xmm3,%xmm2 338 psrlq $1,%xmm3 339 pxor %xmm3,%xmm2 340 psrlq $5,%xmm3 341 pxor %xmm3,%xmm2 342 pxor %xmm3,%xmm3 343 movq $6,%rax 344L$oop_row_6: 345 movdqa (%rsi),%xmm4 346 leaq 16(%rsi),%rsi 347 348 349 movdqa %xmm2,%xmm6 350.byte 102,15,58,15,243,1 351 movdqa %xmm6,%xmm3 352 psrldq $1,%xmm2 353 354 355 356 357 movdqa %xmm4,%xmm5 358.byte 102,15,56,0,224 359.byte 102,15,56,0,233 360 361 362 pxor %xmm5,%xmm2 363 364 365 366 movdqa %xmm4,%xmm5 367 psllq $60,%xmm5 368 movdqa %xmm5,%xmm6 369 pslldq $8,%xmm6 370 pxor %xmm6,%xmm3 371 372 373 psrldq $8,%xmm5 374 pxor %xmm5,%xmm2 375 psrlq $4,%xmm4 376 pxor %xmm4,%xmm2 377 378 subq $1,%rax 379 jnz L$oop_row_6 380 381 382 383 pxor %xmm3,%xmm2 384 psrlq $1,%xmm3 385 pxor %xmm3,%xmm2 386 psrlq $1,%xmm3 387 pxor %xmm3,%xmm2 388 psrlq $5,%xmm3 389 pxor %xmm3,%xmm2 390 pxor %xmm3,%xmm3 391 movdqa %xmm2,%xmm0 392 393 394 leaq -256(%rsi),%rsi 395 396 397 leaq 16(%rdx),%rdx 398 subq $16,%rcx 399 jnz L$oop_ghash 400 401 402.byte 102,65,15,56,0,194 403 movdqu %xmm0,(%rdi) 404 405 406 pxor %xmm0,%xmm0 407 pxor %xmm1,%xmm1 408 pxor %xmm2,%xmm2 409 pxor %xmm3,%xmm3 410 pxor %xmm4,%xmm4 411 pxor %xmm5,%xmm5 412 pxor %xmm6,%xmm6 413 .byte 0xf3,0xc3 414L$ghash_seh_end: 415 416 417 418.p2align 4 419 420 421L$reverse_bytes: 422.byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 423 424L$low4_mask: 425.quad 0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f 426#endif 427