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