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(__i386__) 5#if defined(BORINGSSL_PREFIX) 6#include <boringssl_prefix_symbols_asm.h> 7#endif 8.text 9.globl _gcm_init_clmul 10.private_extern _gcm_init_clmul 11.align 4 12_gcm_init_clmul: 13L_gcm_init_clmul_begin: 14 movl 4(%esp),%edx 15 movl 8(%esp),%eax 16 call L000pic 17L000pic: 18 popl %ecx 19 leal Lbswap-L000pic(%ecx),%ecx 20 movdqu (%eax),%xmm2 21 pshufd $78,%xmm2,%xmm2 22 pshufd $255,%xmm2,%xmm4 23 movdqa %xmm2,%xmm3 24 psllq $1,%xmm2 25 pxor %xmm5,%xmm5 26 psrlq $63,%xmm3 27 pcmpgtd %xmm4,%xmm5 28 pslldq $8,%xmm3 29 por %xmm3,%xmm2 30 pand 16(%ecx),%xmm5 31 pxor %xmm5,%xmm2 32 movdqa %xmm2,%xmm0 33 movdqa %xmm0,%xmm1 34 pshufd $78,%xmm0,%xmm3 35 pshufd $78,%xmm2,%xmm4 36 pxor %xmm0,%xmm3 37 pxor %xmm2,%xmm4 38.byte 102,15,58,68,194,0 39.byte 102,15,58,68,202,17 40.byte 102,15,58,68,220,0 41 xorps %xmm0,%xmm3 42 xorps %xmm1,%xmm3 43 movdqa %xmm3,%xmm4 44 psrldq $8,%xmm3 45 pslldq $8,%xmm4 46 pxor %xmm3,%xmm1 47 pxor %xmm4,%xmm0 48 movdqa %xmm0,%xmm4 49 movdqa %xmm0,%xmm3 50 psllq $5,%xmm0 51 pxor %xmm0,%xmm3 52 psllq $1,%xmm0 53 pxor %xmm3,%xmm0 54 psllq $57,%xmm0 55 movdqa %xmm0,%xmm3 56 pslldq $8,%xmm0 57 psrldq $8,%xmm3 58 pxor %xmm4,%xmm0 59 pxor %xmm3,%xmm1 60 movdqa %xmm0,%xmm4 61 psrlq $1,%xmm0 62 pxor %xmm4,%xmm1 63 pxor %xmm0,%xmm4 64 psrlq $5,%xmm0 65 pxor %xmm4,%xmm0 66 psrlq $1,%xmm0 67 pxor %xmm1,%xmm0 68 pshufd $78,%xmm2,%xmm3 69 pshufd $78,%xmm0,%xmm4 70 pxor %xmm2,%xmm3 71 movdqu %xmm2,(%edx) 72 pxor %xmm0,%xmm4 73 movdqu %xmm0,16(%edx) 74.byte 102,15,58,15,227,8 75 movdqu %xmm4,32(%edx) 76 ret 77.globl _gcm_gmult_clmul 78.private_extern _gcm_gmult_clmul 79.align 4 80_gcm_gmult_clmul: 81L_gcm_gmult_clmul_begin: 82 movl 4(%esp),%eax 83 movl 8(%esp),%edx 84 call L001pic 85L001pic: 86 popl %ecx 87 leal Lbswap-L001pic(%ecx),%ecx 88 movdqu (%eax),%xmm0 89 movdqa (%ecx),%xmm5 90 movups (%edx),%xmm2 91.byte 102,15,56,0,197 92 movups 32(%edx),%xmm4 93 movdqa %xmm0,%xmm1 94 pshufd $78,%xmm0,%xmm3 95 pxor %xmm0,%xmm3 96.byte 102,15,58,68,194,0 97.byte 102,15,58,68,202,17 98.byte 102,15,58,68,220,0 99 xorps %xmm0,%xmm3 100 xorps %xmm1,%xmm3 101 movdqa %xmm3,%xmm4 102 psrldq $8,%xmm3 103 pslldq $8,%xmm4 104 pxor %xmm3,%xmm1 105 pxor %xmm4,%xmm0 106 movdqa %xmm0,%xmm4 107 movdqa %xmm0,%xmm3 108 psllq $5,%xmm0 109 pxor %xmm0,%xmm3 110 psllq $1,%xmm0 111 pxor %xmm3,%xmm0 112 psllq $57,%xmm0 113 movdqa %xmm0,%xmm3 114 pslldq $8,%xmm0 115 psrldq $8,%xmm3 116 pxor %xmm4,%xmm0 117 pxor %xmm3,%xmm1 118 movdqa %xmm0,%xmm4 119 psrlq $1,%xmm0 120 pxor %xmm4,%xmm1 121 pxor %xmm0,%xmm4 122 psrlq $5,%xmm0 123 pxor %xmm4,%xmm0 124 psrlq $1,%xmm0 125 pxor %xmm1,%xmm0 126.byte 102,15,56,0,197 127 movdqu %xmm0,(%eax) 128 ret 129.globl _gcm_ghash_clmul 130.private_extern _gcm_ghash_clmul 131.align 4 132_gcm_ghash_clmul: 133L_gcm_ghash_clmul_begin: 134 pushl %ebp 135 pushl %ebx 136 pushl %esi 137 pushl %edi 138 movl 20(%esp),%eax 139 movl 24(%esp),%edx 140 movl 28(%esp),%esi 141 movl 32(%esp),%ebx 142 call L002pic 143L002pic: 144 popl %ecx 145 leal Lbswap-L002pic(%ecx),%ecx 146 movdqu (%eax),%xmm0 147 movdqa (%ecx),%xmm5 148 movdqu (%edx),%xmm2 149.byte 102,15,56,0,197 150 subl $16,%ebx 151 jz L003odd_tail 152 movdqu (%esi),%xmm3 153 movdqu 16(%esi),%xmm6 154.byte 102,15,56,0,221 155.byte 102,15,56,0,245 156 movdqu 32(%edx),%xmm5 157 pxor %xmm3,%xmm0 158 pshufd $78,%xmm6,%xmm3 159 movdqa %xmm6,%xmm7 160 pxor %xmm6,%xmm3 161 leal 32(%esi),%esi 162.byte 102,15,58,68,242,0 163.byte 102,15,58,68,250,17 164.byte 102,15,58,68,221,0 165 movups 16(%edx),%xmm2 166 nop 167 subl $32,%ebx 168 jbe L004even_tail 169 jmp L005mod_loop 170.align 5,0x90 171L005mod_loop: 172 pshufd $78,%xmm0,%xmm4 173 movdqa %xmm0,%xmm1 174 pxor %xmm0,%xmm4 175 nop 176.byte 102,15,58,68,194,0 177.byte 102,15,58,68,202,17 178.byte 102,15,58,68,229,16 179 movups (%edx),%xmm2 180 xorps %xmm6,%xmm0 181 movdqa (%ecx),%xmm5 182 xorps %xmm7,%xmm1 183 movdqu (%esi),%xmm7 184 pxor %xmm0,%xmm3 185 movdqu 16(%esi),%xmm6 186 pxor %xmm1,%xmm3 187.byte 102,15,56,0,253 188 pxor %xmm3,%xmm4 189 movdqa %xmm4,%xmm3 190 psrldq $8,%xmm4 191 pslldq $8,%xmm3 192 pxor %xmm4,%xmm1 193 pxor %xmm3,%xmm0 194.byte 102,15,56,0,245 195 pxor %xmm7,%xmm1 196 movdqa %xmm6,%xmm7 197 movdqa %xmm0,%xmm4 198 movdqa %xmm0,%xmm3 199 psllq $5,%xmm0 200 pxor %xmm0,%xmm3 201 psllq $1,%xmm0 202 pxor %xmm3,%xmm0 203.byte 102,15,58,68,242,0 204 movups 32(%edx),%xmm5 205 psllq $57,%xmm0 206 movdqa %xmm0,%xmm3 207 pslldq $8,%xmm0 208 psrldq $8,%xmm3 209 pxor %xmm4,%xmm0 210 pxor %xmm3,%xmm1 211 pshufd $78,%xmm7,%xmm3 212 movdqa %xmm0,%xmm4 213 psrlq $1,%xmm0 214 pxor %xmm7,%xmm3 215 pxor %xmm4,%xmm1 216.byte 102,15,58,68,250,17 217 movups 16(%edx),%xmm2 218 pxor %xmm0,%xmm4 219 psrlq $5,%xmm0 220 pxor %xmm4,%xmm0 221 psrlq $1,%xmm0 222 pxor %xmm1,%xmm0 223.byte 102,15,58,68,221,0 224 leal 32(%esi),%esi 225 subl $32,%ebx 226 ja L005mod_loop 227L004even_tail: 228 pshufd $78,%xmm0,%xmm4 229 movdqa %xmm0,%xmm1 230 pxor %xmm0,%xmm4 231.byte 102,15,58,68,194,0 232.byte 102,15,58,68,202,17 233.byte 102,15,58,68,229,16 234 movdqa (%ecx),%xmm5 235 xorps %xmm6,%xmm0 236 xorps %xmm7,%xmm1 237 pxor %xmm0,%xmm3 238 pxor %xmm1,%xmm3 239 pxor %xmm3,%xmm4 240 movdqa %xmm4,%xmm3 241 psrldq $8,%xmm4 242 pslldq $8,%xmm3 243 pxor %xmm4,%xmm1 244 pxor %xmm3,%xmm0 245 movdqa %xmm0,%xmm4 246 movdqa %xmm0,%xmm3 247 psllq $5,%xmm0 248 pxor %xmm0,%xmm3 249 psllq $1,%xmm0 250 pxor %xmm3,%xmm0 251 psllq $57,%xmm0 252 movdqa %xmm0,%xmm3 253 pslldq $8,%xmm0 254 psrldq $8,%xmm3 255 pxor %xmm4,%xmm0 256 pxor %xmm3,%xmm1 257 movdqa %xmm0,%xmm4 258 psrlq $1,%xmm0 259 pxor %xmm4,%xmm1 260 pxor %xmm0,%xmm4 261 psrlq $5,%xmm0 262 pxor %xmm4,%xmm0 263 psrlq $1,%xmm0 264 pxor %xmm1,%xmm0 265 testl %ebx,%ebx 266 jnz L006done 267 movups (%edx),%xmm2 268L003odd_tail: 269 movdqu (%esi),%xmm3 270.byte 102,15,56,0,221 271 pxor %xmm3,%xmm0 272 movdqa %xmm0,%xmm1 273 pshufd $78,%xmm0,%xmm3 274 pshufd $78,%xmm2,%xmm4 275 pxor %xmm0,%xmm3 276 pxor %xmm2,%xmm4 277.byte 102,15,58,68,194,0 278.byte 102,15,58,68,202,17 279.byte 102,15,58,68,220,0 280 xorps %xmm0,%xmm3 281 xorps %xmm1,%xmm3 282 movdqa %xmm3,%xmm4 283 psrldq $8,%xmm3 284 pslldq $8,%xmm4 285 pxor %xmm3,%xmm1 286 pxor %xmm4,%xmm0 287 movdqa %xmm0,%xmm4 288 movdqa %xmm0,%xmm3 289 psllq $5,%xmm0 290 pxor %xmm0,%xmm3 291 psllq $1,%xmm0 292 pxor %xmm3,%xmm0 293 psllq $57,%xmm0 294 movdqa %xmm0,%xmm3 295 pslldq $8,%xmm0 296 psrldq $8,%xmm3 297 pxor %xmm4,%xmm0 298 pxor %xmm3,%xmm1 299 movdqa %xmm0,%xmm4 300 psrlq $1,%xmm0 301 pxor %xmm4,%xmm1 302 pxor %xmm0,%xmm4 303 psrlq $5,%xmm0 304 pxor %xmm4,%xmm0 305 psrlq $1,%xmm0 306 pxor %xmm1,%xmm0 307L006done: 308.byte 102,15,56,0,197 309 movdqu %xmm0,(%eax) 310 popl %edi 311 popl %esi 312 popl %ebx 313 popl %ebp 314 ret 315.align 6,0x90 316Lbswap: 317.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 318.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 319.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 320.byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 321.byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 322.byte 0 323#endif 324