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#include "ring_core_generated/prefix_symbols_asm.h" 6.text 7.globl gcm_init_clmul 8.hidden gcm_init_clmul 9.type gcm_init_clmul,@function 10.align 16 11gcm_init_clmul: 12.L_gcm_init_clmul_begin: 13 movl 4(%esp),%edx 14 movl 8(%esp),%eax 15 call .L000pic 16.L000pic: 17 popl %ecx 18 leal .Lbswap-.L000pic(%ecx),%ecx 19 movdqu (%eax),%xmm2 20 pshufd $78,%xmm2,%xmm2 21 pshufd $255,%xmm2,%xmm4 22 movdqa %xmm2,%xmm3 23 psllq $1,%xmm2 24 pxor %xmm5,%xmm5 25 psrlq $63,%xmm3 26 pcmpgtd %xmm4,%xmm5 27 pslldq $8,%xmm3 28 por %xmm3,%xmm2 29 pand 16(%ecx),%xmm5 30 pxor %xmm5,%xmm2 31 movdqa %xmm2,%xmm0 32 movdqa %xmm0,%xmm1 33 pshufd $78,%xmm0,%xmm3 34 pshufd $78,%xmm2,%xmm4 35 pxor %xmm0,%xmm3 36 pxor %xmm2,%xmm4 37.byte 102,15,58,68,194,0 38.byte 102,15,58,68,202,17 39.byte 102,15,58,68,220,0 40 xorps %xmm0,%xmm3 41 xorps %xmm1,%xmm3 42 movdqa %xmm3,%xmm4 43 psrldq $8,%xmm3 44 pslldq $8,%xmm4 45 pxor %xmm3,%xmm1 46 pxor %xmm4,%xmm0 47 movdqa %xmm0,%xmm4 48 movdqa %xmm0,%xmm3 49 psllq $5,%xmm0 50 pxor %xmm0,%xmm3 51 psllq $1,%xmm0 52 pxor %xmm3,%xmm0 53 psllq $57,%xmm0 54 movdqa %xmm0,%xmm3 55 pslldq $8,%xmm0 56 psrldq $8,%xmm3 57 pxor %xmm4,%xmm0 58 pxor %xmm3,%xmm1 59 movdqa %xmm0,%xmm4 60 psrlq $1,%xmm0 61 pxor %xmm4,%xmm1 62 pxor %xmm0,%xmm4 63 psrlq $5,%xmm0 64 pxor %xmm4,%xmm0 65 psrlq $1,%xmm0 66 pxor %xmm1,%xmm0 67 pshufd $78,%xmm2,%xmm3 68 pshufd $78,%xmm0,%xmm4 69 pxor %xmm2,%xmm3 70 movdqu %xmm2,(%edx) 71 pxor %xmm0,%xmm4 72 movdqu %xmm0,16(%edx) 73.byte 102,15,58,15,227,8 74 movdqu %xmm4,32(%edx) 75 ret 76.size gcm_init_clmul,.-.L_gcm_init_clmul_begin 77.globl gcm_gmult_clmul 78.hidden gcm_gmult_clmul 79.type gcm_gmult_clmul,@function 80.align 16 81gcm_gmult_clmul: 82.L_gcm_gmult_clmul_begin: 83 movl 4(%esp),%eax 84 movl 8(%esp),%edx 85 call .L001pic 86.L001pic: 87 popl %ecx 88 leal .Lbswap-.L001pic(%ecx),%ecx 89 movdqu (%eax),%xmm0 90 movdqa (%ecx),%xmm5 91 movups (%edx),%xmm2 92.byte 102,15,56,0,197 93 movups 32(%edx),%xmm4 94 movdqa %xmm0,%xmm1 95 pshufd $78,%xmm0,%xmm3 96 pxor %xmm0,%xmm3 97.byte 102,15,58,68,194,0 98.byte 102,15,58,68,202,17 99.byte 102,15,58,68,220,0 100 xorps %xmm0,%xmm3 101 xorps %xmm1,%xmm3 102 movdqa %xmm3,%xmm4 103 psrldq $8,%xmm3 104 pslldq $8,%xmm4 105 pxor %xmm3,%xmm1 106 pxor %xmm4,%xmm0 107 movdqa %xmm0,%xmm4 108 movdqa %xmm0,%xmm3 109 psllq $5,%xmm0 110 pxor %xmm0,%xmm3 111 psllq $1,%xmm0 112 pxor %xmm3,%xmm0 113 psllq $57,%xmm0 114 movdqa %xmm0,%xmm3 115 pslldq $8,%xmm0 116 psrldq $8,%xmm3 117 pxor %xmm4,%xmm0 118 pxor %xmm3,%xmm1 119 movdqa %xmm0,%xmm4 120 psrlq $1,%xmm0 121 pxor %xmm4,%xmm1 122 pxor %xmm0,%xmm4 123 psrlq $5,%xmm0 124 pxor %xmm4,%xmm0 125 psrlq $1,%xmm0 126 pxor %xmm1,%xmm0 127.byte 102,15,56,0,197 128 movdqu %xmm0,(%eax) 129 ret 130.size gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin 131.globl gcm_ghash_clmul 132.hidden gcm_ghash_clmul 133.type gcm_ghash_clmul,@function 134.align 16 135gcm_ghash_clmul: 136.L_gcm_ghash_clmul_begin: 137 pushl %ebp 138 pushl %ebx 139 pushl %esi 140 pushl %edi 141 movl 20(%esp),%eax 142 movl 24(%esp),%edx 143 movl 28(%esp),%esi 144 movl 32(%esp),%ebx 145 call .L002pic 146.L002pic: 147 popl %ecx 148 leal .Lbswap-.L002pic(%ecx),%ecx 149 movdqu (%eax),%xmm0 150 movdqa (%ecx),%xmm5 151 movdqu (%edx),%xmm2 152.byte 102,15,56,0,197 153 subl $16,%ebx 154 jz .L003odd_tail 155 movdqu (%esi),%xmm3 156 movdqu 16(%esi),%xmm6 157.byte 102,15,56,0,221 158.byte 102,15,56,0,245 159 movdqu 32(%edx),%xmm5 160 pxor %xmm3,%xmm0 161 pshufd $78,%xmm6,%xmm3 162 movdqa %xmm6,%xmm7 163 pxor %xmm6,%xmm3 164 leal 32(%esi),%esi 165.byte 102,15,58,68,242,0 166.byte 102,15,58,68,250,17 167.byte 102,15,58,68,221,0 168 movups 16(%edx),%xmm2 169 nop 170 subl $32,%ebx 171 jbe .L004even_tail 172 jmp .L005mod_loop 173.align 32 174.L005mod_loop: 175 pshufd $78,%xmm0,%xmm4 176 movdqa %xmm0,%xmm1 177 pxor %xmm0,%xmm4 178 nop 179.byte 102,15,58,68,194,0 180.byte 102,15,58,68,202,17 181.byte 102,15,58,68,229,16 182 movups (%edx),%xmm2 183 xorps %xmm6,%xmm0 184 movdqa (%ecx),%xmm5 185 xorps %xmm7,%xmm1 186 movdqu (%esi),%xmm7 187 pxor %xmm0,%xmm3 188 movdqu 16(%esi),%xmm6 189 pxor %xmm1,%xmm3 190.byte 102,15,56,0,253 191 pxor %xmm3,%xmm4 192 movdqa %xmm4,%xmm3 193 psrldq $8,%xmm4 194 pslldq $8,%xmm3 195 pxor %xmm4,%xmm1 196 pxor %xmm3,%xmm0 197.byte 102,15,56,0,245 198 pxor %xmm7,%xmm1 199 movdqa %xmm6,%xmm7 200 movdqa %xmm0,%xmm4 201 movdqa %xmm0,%xmm3 202 psllq $5,%xmm0 203 pxor %xmm0,%xmm3 204 psllq $1,%xmm0 205 pxor %xmm3,%xmm0 206.byte 102,15,58,68,242,0 207 movups 32(%edx),%xmm5 208 psllq $57,%xmm0 209 movdqa %xmm0,%xmm3 210 pslldq $8,%xmm0 211 psrldq $8,%xmm3 212 pxor %xmm4,%xmm0 213 pxor %xmm3,%xmm1 214 pshufd $78,%xmm7,%xmm3 215 movdqa %xmm0,%xmm4 216 psrlq $1,%xmm0 217 pxor %xmm7,%xmm3 218 pxor %xmm4,%xmm1 219.byte 102,15,58,68,250,17 220 movups 16(%edx),%xmm2 221 pxor %xmm0,%xmm4 222 psrlq $5,%xmm0 223 pxor %xmm4,%xmm0 224 psrlq $1,%xmm0 225 pxor %xmm1,%xmm0 226.byte 102,15,58,68,221,0 227 leal 32(%esi),%esi 228 subl $32,%ebx 229 ja .L005mod_loop 230.L004even_tail: 231 pshufd $78,%xmm0,%xmm4 232 movdqa %xmm0,%xmm1 233 pxor %xmm0,%xmm4 234.byte 102,15,58,68,194,0 235.byte 102,15,58,68,202,17 236.byte 102,15,58,68,229,16 237 movdqa (%ecx),%xmm5 238 xorps %xmm6,%xmm0 239 xorps %xmm7,%xmm1 240 pxor %xmm0,%xmm3 241 pxor %xmm1,%xmm3 242 pxor %xmm3,%xmm4 243 movdqa %xmm4,%xmm3 244 psrldq $8,%xmm4 245 pslldq $8,%xmm3 246 pxor %xmm4,%xmm1 247 pxor %xmm3,%xmm0 248 movdqa %xmm0,%xmm4 249 movdqa %xmm0,%xmm3 250 psllq $5,%xmm0 251 pxor %xmm0,%xmm3 252 psllq $1,%xmm0 253 pxor %xmm3,%xmm0 254 psllq $57,%xmm0 255 movdqa %xmm0,%xmm3 256 pslldq $8,%xmm0 257 psrldq $8,%xmm3 258 pxor %xmm4,%xmm0 259 pxor %xmm3,%xmm1 260 movdqa %xmm0,%xmm4 261 psrlq $1,%xmm0 262 pxor %xmm4,%xmm1 263 pxor %xmm0,%xmm4 264 psrlq $5,%xmm0 265 pxor %xmm4,%xmm0 266 psrlq $1,%xmm0 267 pxor %xmm1,%xmm0 268 testl %ebx,%ebx 269 jnz .L006done 270 movups (%edx),%xmm2 271.L003odd_tail: 272 movdqu (%esi),%xmm3 273.byte 102,15,56,0,221 274 pxor %xmm3,%xmm0 275 movdqa %xmm0,%xmm1 276 pshufd $78,%xmm0,%xmm3 277 pshufd $78,%xmm2,%xmm4 278 pxor %xmm0,%xmm3 279 pxor %xmm2,%xmm4 280.byte 102,15,58,68,194,0 281.byte 102,15,58,68,202,17 282.byte 102,15,58,68,220,0 283 xorps %xmm0,%xmm3 284 xorps %xmm1,%xmm3 285 movdqa %xmm3,%xmm4 286 psrldq $8,%xmm3 287 pslldq $8,%xmm4 288 pxor %xmm3,%xmm1 289 pxor %xmm4,%xmm0 290 movdqa %xmm0,%xmm4 291 movdqa %xmm0,%xmm3 292 psllq $5,%xmm0 293 pxor %xmm0,%xmm3 294 psllq $1,%xmm0 295 pxor %xmm3,%xmm0 296 psllq $57,%xmm0 297 movdqa %xmm0,%xmm3 298 pslldq $8,%xmm0 299 psrldq $8,%xmm3 300 pxor %xmm4,%xmm0 301 pxor %xmm3,%xmm1 302 movdqa %xmm0,%xmm4 303 psrlq $1,%xmm0 304 pxor %xmm4,%xmm1 305 pxor %xmm0,%xmm4 306 psrlq $5,%xmm0 307 pxor %xmm4,%xmm0 308 psrlq $1,%xmm0 309 pxor %xmm1,%xmm0 310.L006done: 311.byte 102,15,56,0,197 312 movdqu %xmm0,(%eax) 313 popl %edi 314 popl %esi 315 popl %ebx 316 popl %ebp 317 ret 318.size gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin 319.align 64 320.Lbswap: 321.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 322.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 323.align 64 324.L007rem_8bit: 325.value 0,450,900,582,1800,1738,1164,1358 326.value 3600,4050,3476,3158,2328,2266,2716,2910 327.value 7200,7650,8100,7782,6952,6890,6316,6510 328.value 4656,5106,4532,4214,5432,5370,5820,6014 329.value 14400,14722,15300,14854,16200,16010,15564,15630 330.value 13904,14226,13780,13334,12632,12442,13020,13086 331.value 9312,9634,10212,9766,9064,8874,8428,8494 332.value 10864,11186,10740,10294,11640,11450,12028,12094 333.value 28800,28994,29444,29382,30600,30282,29708,30158 334.value 32400,32594,32020,31958,31128,30810,31260,31710 335.value 27808,28002,28452,28390,27560,27242,26668,27118 336.value 25264,25458,24884,24822,26040,25722,26172,26622 337.value 18624,18690,19268,19078,20424,19978,19532,19854 338.value 18128,18194,17748,17558,16856,16410,16988,17310 339.value 21728,21794,22372,22182,21480,21034,20588,20910 340.value 23280,23346,22900,22710,24056,23610,24188,24510 341.value 57600,57538,57988,58182,58888,59338,58764,58446 342.value 61200,61138,60564,60758,59416,59866,60316,59998 343.value 64800,64738,65188,65382,64040,64490,63916,63598 344.value 62256,62194,61620,61814,62520,62970,63420,63102 345.value 55616,55426,56004,56070,56904,57226,56780,56334 346.value 55120,54930,54484,54550,53336,53658,54236,53790 347.value 50528,50338,50916,50982,49768,50090,49644,49198 348.value 52080,51890,51444,51510,52344,52666,53244,52798 349.value 37248,36930,37380,37830,38536,38730,38156,38094 350.value 40848,40530,39956,40406,39064,39258,39708,39646 351.value 36256,35938,36388,36838,35496,35690,35116,35054 352.value 33712,33394,32820,33270,33976,34170,34620,34558 353.value 43456,43010,43588,43910,44744,44810,44364,44174 354.value 42960,42514,42068,42390,41176,41242,41820,41630 355.value 46560,46114,46692,47014,45800,45866,45420,45230 356.value 48112,47666,47220,47542,48376,48442,49020,48830 357.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 358.byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 359.byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 360.byte 0 361#endif 362.section .note.GNU-stack,"",@progbits 363