1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4%ifdef BORINGSSL_PREFIX 5%include "boringssl_prefix_symbols_nasm.inc" 6%endif 7%ifidn __OUTPUT_FORMAT__,obj 8section code use32 class=code align=64 9%elifidn __OUTPUT_FORMAT__,win32 10$@feat.00 equ 1 11section .text code align=64 12%else 13section .text code 14%endif 15global _gcm_gmult_ssse3 16align 16 17_gcm_gmult_ssse3: 18L$_gcm_gmult_ssse3_begin: 19 push ebp 20 push ebx 21 push esi 22 push edi 23 mov edi,DWORD [20+esp] 24 mov esi,DWORD [24+esp] 25 movdqu xmm0,[edi] 26 call L$000pic_point 27L$000pic_point: 28 pop eax 29 movdqa xmm7,[(L$reverse_bytes-L$000pic_point)+eax] 30 movdqa xmm2,[(L$low4_mask-L$000pic_point)+eax] 31db 102,15,56,0,199 32 movdqa xmm1,xmm2 33 pandn xmm1,xmm0 34 psrld xmm1,4 35 pand xmm0,xmm2 36 pxor xmm2,xmm2 37 pxor xmm3,xmm3 38 mov eax,5 39L$001loop_row_1: 40 movdqa xmm4,[esi] 41 lea esi,[16+esi] 42 movdqa xmm6,xmm2 43db 102,15,58,15,243,1 44 movdqa xmm3,xmm6 45 psrldq xmm2,1 46 movdqa xmm5,xmm4 47db 102,15,56,0,224 48db 102,15,56,0,233 49 pxor xmm2,xmm5 50 movdqa xmm5,xmm4 51 psllq xmm5,60 52 movdqa xmm6,xmm5 53 pslldq xmm6,8 54 pxor xmm3,xmm6 55 psrldq xmm5,8 56 pxor xmm2,xmm5 57 psrlq xmm4,4 58 pxor xmm2,xmm4 59 sub eax,1 60 jnz NEAR L$001loop_row_1 61 pxor xmm2,xmm3 62 psrlq xmm3,1 63 pxor xmm2,xmm3 64 psrlq xmm3,1 65 pxor xmm2,xmm3 66 psrlq xmm3,5 67 pxor xmm2,xmm3 68 pxor xmm3,xmm3 69 mov eax,5 70L$002loop_row_2: 71 movdqa xmm4,[esi] 72 lea esi,[16+esi] 73 movdqa xmm6,xmm2 74db 102,15,58,15,243,1 75 movdqa xmm3,xmm6 76 psrldq xmm2,1 77 movdqa xmm5,xmm4 78db 102,15,56,0,224 79db 102,15,56,0,233 80 pxor xmm2,xmm5 81 movdqa xmm5,xmm4 82 psllq xmm5,60 83 movdqa xmm6,xmm5 84 pslldq xmm6,8 85 pxor xmm3,xmm6 86 psrldq xmm5,8 87 pxor xmm2,xmm5 88 psrlq xmm4,4 89 pxor xmm2,xmm4 90 sub eax,1 91 jnz NEAR L$002loop_row_2 92 pxor xmm2,xmm3 93 psrlq xmm3,1 94 pxor xmm2,xmm3 95 psrlq xmm3,1 96 pxor xmm2,xmm3 97 psrlq xmm3,5 98 pxor xmm2,xmm3 99 pxor xmm3,xmm3 100 mov eax,6 101L$003loop_row_3: 102 movdqa xmm4,[esi] 103 lea esi,[16+esi] 104 movdqa xmm6,xmm2 105db 102,15,58,15,243,1 106 movdqa xmm3,xmm6 107 psrldq xmm2,1 108 movdqa xmm5,xmm4 109db 102,15,56,0,224 110db 102,15,56,0,233 111 pxor xmm2,xmm5 112 movdqa xmm5,xmm4 113 psllq xmm5,60 114 movdqa xmm6,xmm5 115 pslldq xmm6,8 116 pxor xmm3,xmm6 117 psrldq xmm5,8 118 pxor xmm2,xmm5 119 psrlq xmm4,4 120 pxor xmm2,xmm4 121 sub eax,1 122 jnz NEAR L$003loop_row_3 123 pxor xmm2,xmm3 124 psrlq xmm3,1 125 pxor xmm2,xmm3 126 psrlq xmm3,1 127 pxor xmm2,xmm3 128 psrlq xmm3,5 129 pxor xmm2,xmm3 130 pxor xmm3,xmm3 131db 102,15,56,0,215 132 movdqu [edi],xmm2 133 pxor xmm0,xmm0 134 pxor xmm1,xmm1 135 pxor xmm2,xmm2 136 pxor xmm3,xmm3 137 pxor xmm4,xmm4 138 pxor xmm5,xmm5 139 pxor xmm6,xmm6 140 pop edi 141 pop esi 142 pop ebx 143 pop ebp 144 ret 145global _gcm_ghash_ssse3 146align 16 147_gcm_ghash_ssse3: 148L$_gcm_ghash_ssse3_begin: 149 push ebp 150 push ebx 151 push esi 152 push edi 153 mov edi,DWORD [20+esp] 154 mov esi,DWORD [24+esp] 155 mov edx,DWORD [28+esp] 156 mov ecx,DWORD [32+esp] 157 movdqu xmm0,[edi] 158 call L$004pic_point 159L$004pic_point: 160 pop ebx 161 movdqa xmm7,[(L$reverse_bytes-L$004pic_point)+ebx] 162 and ecx,-16 163db 102,15,56,0,199 164 pxor xmm3,xmm3 165L$005loop_ghash: 166 movdqa xmm2,[(L$low4_mask-L$004pic_point)+ebx] 167 movdqu xmm1,[edx] 168db 102,15,56,0,207 169 pxor xmm0,xmm1 170 movdqa xmm1,xmm2 171 pandn xmm1,xmm0 172 psrld xmm1,4 173 pand xmm0,xmm2 174 pxor xmm2,xmm2 175 mov eax,5 176L$006loop_row_4: 177 movdqa xmm4,[esi] 178 lea esi,[16+esi] 179 movdqa xmm6,xmm2 180db 102,15,58,15,243,1 181 movdqa xmm3,xmm6 182 psrldq xmm2,1 183 movdqa xmm5,xmm4 184db 102,15,56,0,224 185db 102,15,56,0,233 186 pxor xmm2,xmm5 187 movdqa xmm5,xmm4 188 psllq xmm5,60 189 movdqa xmm6,xmm5 190 pslldq xmm6,8 191 pxor xmm3,xmm6 192 psrldq xmm5,8 193 pxor xmm2,xmm5 194 psrlq xmm4,4 195 pxor xmm2,xmm4 196 sub eax,1 197 jnz NEAR L$006loop_row_4 198 pxor xmm2,xmm3 199 psrlq xmm3,1 200 pxor xmm2,xmm3 201 psrlq xmm3,1 202 pxor xmm2,xmm3 203 psrlq xmm3,5 204 pxor xmm2,xmm3 205 pxor xmm3,xmm3 206 mov eax,5 207L$007loop_row_5: 208 movdqa xmm4,[esi] 209 lea esi,[16+esi] 210 movdqa xmm6,xmm2 211db 102,15,58,15,243,1 212 movdqa xmm3,xmm6 213 psrldq xmm2,1 214 movdqa xmm5,xmm4 215db 102,15,56,0,224 216db 102,15,56,0,233 217 pxor xmm2,xmm5 218 movdqa xmm5,xmm4 219 psllq xmm5,60 220 movdqa xmm6,xmm5 221 pslldq xmm6,8 222 pxor xmm3,xmm6 223 psrldq xmm5,8 224 pxor xmm2,xmm5 225 psrlq xmm4,4 226 pxor xmm2,xmm4 227 sub eax,1 228 jnz NEAR L$007loop_row_5 229 pxor xmm2,xmm3 230 psrlq xmm3,1 231 pxor xmm2,xmm3 232 psrlq xmm3,1 233 pxor xmm2,xmm3 234 psrlq xmm3,5 235 pxor xmm2,xmm3 236 pxor xmm3,xmm3 237 mov eax,6 238L$008loop_row_6: 239 movdqa xmm4,[esi] 240 lea esi,[16+esi] 241 movdqa xmm6,xmm2 242db 102,15,58,15,243,1 243 movdqa xmm3,xmm6 244 psrldq xmm2,1 245 movdqa xmm5,xmm4 246db 102,15,56,0,224 247db 102,15,56,0,233 248 pxor xmm2,xmm5 249 movdqa xmm5,xmm4 250 psllq xmm5,60 251 movdqa xmm6,xmm5 252 pslldq xmm6,8 253 pxor xmm3,xmm6 254 psrldq xmm5,8 255 pxor xmm2,xmm5 256 psrlq xmm4,4 257 pxor xmm2,xmm4 258 sub eax,1 259 jnz NEAR L$008loop_row_6 260 pxor xmm2,xmm3 261 psrlq xmm3,1 262 pxor xmm2,xmm3 263 psrlq xmm3,1 264 pxor xmm2,xmm3 265 psrlq xmm3,5 266 pxor xmm2,xmm3 267 pxor xmm3,xmm3 268 movdqa xmm0,xmm2 269 lea esi,[esi-256] 270 lea edx,[16+edx] 271 sub ecx,16 272 jnz NEAR L$005loop_ghash 273db 102,15,56,0,199 274 movdqu [edi],xmm0 275 pxor xmm0,xmm0 276 pxor xmm1,xmm1 277 pxor xmm2,xmm2 278 pxor xmm3,xmm3 279 pxor xmm4,xmm4 280 pxor xmm5,xmm5 281 pxor xmm6,xmm6 282 pop edi 283 pop esi 284 pop ebx 285 pop ebp 286 ret 287align 16 288L$reverse_bytes: 289db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 290align 16 291L$low4_mask: 292dd 252645135,252645135,252645135,252645135 293