Changeset 100982 in vbox
- Timestamp:
- Aug 25, 2023 4:53:54 PM (21 months ago)
- svn:sync-xref-src-repo-rev:
- 158923
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/libs/openssl-3.1.0/crypto/genasm-macosx/poly1305-x86_64.S
r100978 r100982 1 .text 2 3 4 5 .globl poly1305_init 6 .hidden poly1305_init 7 .globl poly1305_blocks 8 .hidden poly1305_blocks 9 .globl poly1305_emit 10 .hidden poly1305_emit 11 12 .type poly1305_init,@function 13 .align 32 14 poly1305_init: 15 .cfi_startproc 16 xorq %rax,%rax 17 movq %rax,0(%rdi) 18 movq %rax,8(%rdi) 19 movq %rax,16(%rdi) 20 21 cmpq $0,%rsi 22 je .Lno_key 23 24 leaq poly1305_blocks(%rip),%r10 25 leaq poly1305_emit(%rip),%r11 26 movq $0x0ffffffc0fffffff,%rax 27 movq $0x0ffffffc0ffffffc,%rcx 28 andq 0(%rsi),%rax 29 andq 8(%rsi),%rcx 30 movq %rax,24(%rdi) 31 movq %rcx,32(%rdi) 32 movq %r10,0(%rdx) 33 movq %r11,8(%rdx) 34 movl $1,%eax 35 .Lno_key: 36 .byte 0xf3,0xc3 37 .cfi_endproc 38 .size poly1305_init,.-poly1305_init 39 40 .type poly1305_blocks,@function 41 .align 32 42 poly1305_blocks: 43 .cfi_startproc 44 .Lblocks: 45 shrq $4,%rdx 46 jz .Lno_data 47 48 pushq %rbx 49 .cfi_adjust_cfa_offset 8 50 .cfi_offset %rbx,-16 51 pushq %rbp 52 .cfi_adjust_cfa_offset 8 53 .cfi_offset %rbp,-24 54 pushq %r12 55 .cfi_adjust_cfa_offset 8 56 .cfi_offset %r12,-32 57 pushq %r13 58 .cfi_adjust_cfa_offset 8 59 .cfi_offset %r13,-40 60 pushq %r14 61 .cfi_adjust_cfa_offset 8 62 .cfi_offset %r14,-48 63 pushq %r15 64 .cfi_adjust_cfa_offset 8 65 .cfi_offset %r15,-56 66 .Lblocks_body: 67 68 movq %rdx,%r15 69 70 movq 24(%rdi),%r11 71 movq 32(%rdi),%r13 72 73 movq 0(%rdi),%r14 74 movq 8(%rdi),%rbx 75 movq 16(%rdi),%rbp 76 77 movq %r13,%r12 78 shrq $2,%r13 79 movq %r12,%rax 80 addq %r12,%r13 81 jmp .Loop 82 83 .align 32 84 .Loop: 85 addq 0(%rsi),%r14 86 adcq 8(%rsi),%rbx 87 leaq 16(%rsi),%rsi 88 adcq %rcx,%rbp 89 mulq %r14 90 movq %rax,%r9 91 movq %r11,%rax 92 movq %rdx,%r10 93 94 mulq %r14 95 movq %rax,%r14 96 movq %r11,%rax 97 movq %rdx,%r8 98 99 mulq %rbx 100 addq %rax,%r9 101 movq %r13,%rax 102 adcq %rdx,%r10 103 104 mulq %rbx 105 movq %rbp,%rbx 106 addq %rax,%r14 107 adcq %rdx,%r8 108 109 imulq %r13,%rbx 110 addq %rbx,%r9 111 movq %r8,%rbx 112 adcq $0,%r10 113 114 imulq %r11,%rbp 115 addq %r9,%rbx 116 movq $-4,%rax 117 adcq %rbp,%r10 118 119 andq %r10,%rax 120 movq %r10,%rbp 121 shrq $2,%r10 122 andq $3,%rbp 123 addq %r10,%rax 124 addq %rax,%r14 125 adcq $0,%rbx 126 adcq $0,%rbp 127 movq %r12,%rax 128 decq %r15 129 jnz .Loop 130 131 movq %r14,0(%rdi) 132 movq %rbx,8(%rdi) 133 movq %rbp,16(%rdi) 134 135 movq 0(%rsp),%r15 136 .cfi_restore %r15 137 movq 8(%rsp),%r14 138 .cfi_restore %r14 139 movq 16(%rsp),%r13 140 .cfi_restore %r13 141 movq 24(%rsp),%r12 142 .cfi_restore %r12 143 movq 32(%rsp),%rbp 144 .cfi_restore %rbp 145 movq 40(%rsp),%rbx 146 .cfi_restore %rbx 147 leaq 48(%rsp),%rsp 148 .cfi_adjust_cfa_offset -48 149 .Lno_data: 150 .Lblocks_epilogue: 151 .byte 0xf3,0xc3 152 .cfi_endproc 153 .size poly1305_blocks,.-poly1305_blocks 154 155 .type poly1305_emit,@function 156 .align 32 157 poly1305_emit: 158 .cfi_startproc 159 .Lemit: 160 movq 0(%rdi),%r8 161 movq 8(%rdi),%r9 162 movq 16(%rdi),%r10 163 164 movq %r8,%rax 165 addq $5,%r8 166 movq %r9,%rcx 167 adcq $0,%r9 168 adcq $0,%r10 169 shrq $2,%r10 170 cmovnzq %r8,%rax 171 cmovnzq %r9,%rcx 172 173 addq 0(%rdx),%rax 174 adcq 8(%rdx),%rcx 175 movq %rax,0(%rsi) 176 movq %rcx,8(%rsi) 177 178 .byte 0xf3,0xc3 179 .cfi_endproc 180 .size poly1305_emit,.-poly1305_emit 181 .byte 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 182 .align 16 183 .globl xor128_encrypt_n_pad 184 .type xor128_encrypt_n_pad,@function 185 .align 16 186 xor128_encrypt_n_pad: 187 .cfi_startproc 188 subq %rdx,%rsi 189 subq %rdx,%rdi 190 movq %rcx,%r10 191 shrq $4,%rcx 192 jz .Ltail_enc 193 nop 194 .Loop_enc_xmm: 195 movdqu (%rsi,%rdx,1),%xmm0 196 pxor (%rdx),%xmm0 197 movdqu %xmm0,(%rdi,%rdx,1) 198 movdqa %xmm0,(%rdx) 199 leaq 16(%rdx),%rdx 200 decq %rcx 201 jnz .Loop_enc_xmm 202 203 andq $15,%r10 204 jz .Ldone_enc 205 206 .Ltail_enc: 207 movq $16,%rcx 208 subq %r10,%rcx 209 xorl %eax,%eax 210 .Loop_enc_byte: 211 movb (%rsi,%rdx,1),%al 212 xorb (%rdx),%al 213 movb %al,(%rdi,%rdx,1) 214 movb %al,(%rdx) 215 leaq 1(%rdx),%rdx 216 decq %r10 217 jnz .Loop_enc_byte 218 219 xorl %eax,%eax 220 .Loop_enc_pad: 221 movb %al,(%rdx) 222 leaq 1(%rdx),%rdx 223 decq %rcx 224 jnz .Loop_enc_pad 225 226 .Ldone_enc: 227 movq %rdx,%rax 228 .byte 0xf3,0xc3 229 .cfi_endproc 230 .size xor128_encrypt_n_pad,.-xor128_encrypt_n_pad 231 232 .globl xor128_decrypt_n_pad 233 .type xor128_decrypt_n_pad,@function 234 .align 16 235 xor128_decrypt_n_pad: 236 .cfi_startproc 237 subq %rdx,%rsi 238 subq %rdx,%rdi 239 movq %rcx,%r10 240 shrq $4,%rcx 241 jz .Ltail_dec 242 nop 243 .Loop_dec_xmm: 244 movdqu (%rsi,%rdx,1),%xmm0 245 movdqa (%rdx),%xmm1 246 pxor %xmm0,%xmm1 247 movdqu %xmm1,(%rdi,%rdx,1) 248 movdqa %xmm0,(%rdx) 249 leaq 16(%rdx),%rdx 250 decq %rcx 251 jnz .Loop_dec_xmm 252 253 pxor %xmm1,%xmm1 254 andq $15,%r10 255 jz .Ldone_dec 256 257 .Ltail_dec: 258 movq $16,%rcx 259 subq %r10,%rcx 260 xorl %eax,%eax 261 xorq %r11,%r11 262 .Loop_dec_byte: 263 movb (%rsi,%rdx,1),%r11b 264 movb (%rdx),%al 265 xorb %r11b,%al 266 movb %al,(%rdi,%rdx,1) 267 movb %r11b,(%rdx) 268 leaq 1(%rdx),%rdx 269 decq %r10 270 jnz .Loop_dec_byte 271 272 xorl %eax,%eax 273 .Loop_dec_pad: 274 movb %al,(%rdx) 275 leaq 1(%rdx),%rdx 276 decq %rcx 277 jnz .Loop_dec_pad 278 279 .Ldone_dec: 280 movq %rdx,%rax 281 .byte 0xf3,0xc3 282 .cfi_endproc 283 .size xor128_decrypt_n_pad,.-xor128_decrypt_n_pad 284 .section ".note.gnu.property", "a" 285 .p2align 3 286 .long 1f - 0f 287 .long 4f - 1f 288 .long 5 289 0: 290 # "GNU" encoded with .byte, since .asciz isn't supported 291 # on Solaris. 292 .byte 0x47 293 .byte 0x4e 294 .byte 0x55 295 .byte 0 296 1: 297 .p2align 3 298 .long 0xc0000002 299 .long 3f - 2f 300 2: 301 .long 3 302 3: 303 .p2align 3 304 4: 1 .text 2 3 4 5 .globl _poly1305_init 6 .private_extern _poly1305_init 7 .globl _poly1305_blocks 8 .private_extern _poly1305_blocks 9 .globl _poly1305_emit 10 .private_extern _poly1305_emit 11 12 13 .p2align 5 14 _poly1305_init: 15 16 xorq %rax,%rax 17 movq %rax,0(%rdi) 18 movq %rax,8(%rdi) 19 movq %rax,16(%rdi) 20 21 cmpq $0,%rsi 22 je L$no_key 23 24 leaq _poly1305_blocks(%rip),%r10 25 leaq _poly1305_emit(%rip),%r11 26 movq $0x0ffffffc0fffffff,%rax 27 movq $0x0ffffffc0ffffffc,%rcx 28 andq 0(%rsi),%rax 29 andq 8(%rsi),%rcx 30 movq %rax,24(%rdi) 31 movq %rcx,32(%rdi) 32 movq %r10,0(%rdx) 33 movq %r11,8(%rdx) 34 movl $1,%eax 35 L$no_key: 36 .byte 0xf3,0xc3 37 38 39 40 41 .p2align 5 42 _poly1305_blocks: 43 44 L$blocks: 45 shrq $4,%rdx 46 jz L$no_data 47 48 pushq %rbx 49 50 pushq %rbp 51 52 pushq %r12 53 54 pushq %r13 55 56 pushq %r14 57 58 pushq %r15 59 60 L$blocks_body: 61 62 movq %rdx,%r15 63 64 movq 24(%rdi),%r11 65 movq 32(%rdi),%r13 66 67 movq 0(%rdi),%r14 68 movq 8(%rdi),%rbx 69 movq 16(%rdi),%rbp 70 71 movq %r13,%r12 72 shrq $2,%r13 73 movq %r12,%rax 74 addq %r12,%r13 75 jmp L$oop 76 77 .p2align 5 78 L$oop: 79 addq 0(%rsi),%r14 80 adcq 8(%rsi),%rbx 81 leaq 16(%rsi),%rsi 82 adcq %rcx,%rbp 83 mulq %r14 84 movq %rax,%r9 85 movq %r11,%rax 86 movq %rdx,%r10 87 88 mulq %r14 89 movq %rax,%r14 90 movq %r11,%rax 91 movq %rdx,%r8 92 93 mulq %rbx 94 addq %rax,%r9 95 movq %r13,%rax 96 adcq %rdx,%r10 97 98 mulq %rbx 99 movq %rbp,%rbx 100 addq %rax,%r14 101 adcq %rdx,%r8 102 103 imulq %r13,%rbx 104 addq %rbx,%r9 105 movq %r8,%rbx 106 adcq $0,%r10 107 108 imulq %r11,%rbp 109 addq %r9,%rbx 110 movq $-4,%rax 111 adcq %rbp,%r10 112 113 andq %r10,%rax 114 movq %r10,%rbp 115 shrq $2,%r10 116 andq $3,%rbp 117 addq %r10,%rax 118 addq %rax,%r14 119 adcq $0,%rbx 120 adcq $0,%rbp 121 movq %r12,%rax 122 decq %r15 123 jnz L$oop 124 125 movq %r14,0(%rdi) 126 movq %rbx,8(%rdi) 127 movq %rbp,16(%rdi) 128 129 movq 0(%rsp),%r15 130 131 movq 8(%rsp),%r14 132 133 movq 16(%rsp),%r13 134 135 movq 24(%rsp),%r12 136 137 movq 32(%rsp),%rbp 138 139 movq 40(%rsp),%rbx 140 141 leaq 48(%rsp),%rsp 142 143 L$no_data: 144 L$blocks_epilogue: 145 .byte 0xf3,0xc3 146 147 148 149 150 .p2align 5 151 _poly1305_emit: 152 153 L$emit: 154 movq 0(%rdi),%r8 155 movq 8(%rdi),%r9 156 movq 16(%rdi),%r10 157 158 movq %r8,%rax 159 addq $5,%r8 160 movq %r9,%rcx 161 adcq $0,%r9 162 adcq $0,%r10 163 shrq $2,%r10 164 cmovnzq %r8,%rax 165 cmovnzq %r9,%rcx 166 167 addq 0(%rdx),%rax 168 adcq 8(%rdx),%rcx 169 movq %rax,0(%rsi) 170 movq %rcx,8(%rsi) 171 172 .byte 0xf3,0xc3 173 174 175 .byte 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 176 .p2align 4 177 .globl _xor128_encrypt_n_pad 178 179 .p2align 4 180 _xor128_encrypt_n_pad: 181 182 subq %rdx,%rsi 183 subq %rdx,%rdi 184 movq %rcx,%r10 185 shrq $4,%rcx 186 jz L$tail_enc 187 nop 188 L$oop_enc_xmm: 189 movdqu (%rsi,%rdx,1),%xmm0 190 pxor (%rdx),%xmm0 191 movdqu %xmm0,(%rdi,%rdx,1) 192 movdqa %xmm0,(%rdx) 193 leaq 16(%rdx),%rdx 194 decq %rcx 195 jnz L$oop_enc_xmm 196 197 andq $15,%r10 198 jz L$done_enc 199 200 L$tail_enc: 201 movq $16,%rcx 202 subq %r10,%rcx 203 xorl %eax,%eax 204 L$oop_enc_byte: 205 movb (%rsi,%rdx,1),%al 206 xorb (%rdx),%al 207 movb %al,(%rdi,%rdx,1) 208 movb %al,(%rdx) 209 leaq 1(%rdx),%rdx 210 decq %r10 211 jnz L$oop_enc_byte 212 213 xorl %eax,%eax 214 L$oop_enc_pad: 215 movb %al,(%rdx) 216 leaq 1(%rdx),%rdx 217 decq %rcx 218 jnz L$oop_enc_pad 219 220 L$done_enc: 221 movq %rdx,%rax 222 .byte 0xf3,0xc3 223 224 225 226 .globl _xor128_decrypt_n_pad 227 228 .p2align 4 229 _xor128_decrypt_n_pad: 230 231 subq %rdx,%rsi 232 subq %rdx,%rdi 233 movq %rcx,%r10 234 shrq $4,%rcx 235 jz L$tail_dec 236 nop 237 L$oop_dec_xmm: 238 movdqu (%rsi,%rdx,1),%xmm0 239 movdqa (%rdx),%xmm1 240 pxor %xmm0,%xmm1 241 movdqu %xmm1,(%rdi,%rdx,1) 242 movdqa %xmm0,(%rdx) 243 leaq 16(%rdx),%rdx 244 decq %rcx 245 jnz L$oop_dec_xmm 246 247 pxor %xmm1,%xmm1 248 andq $15,%r10 249 jz L$done_dec 250 251 L$tail_dec: 252 movq $16,%rcx 253 subq %r10,%rcx 254 xorl %eax,%eax 255 xorq %r11,%r11 256 L$oop_dec_byte: 257 movb (%rsi,%rdx,1),%r11b 258 movb (%rdx),%al 259 xorb %r11b,%al 260 movb %al,(%rdi,%rdx,1) 261 movb %r11b,(%rdx) 262 leaq 1(%rdx),%rdx 263 decq %r10 264 jnz L$oop_dec_byte 265 266 xorl %eax,%eax 267 L$oop_dec_pad: 268 movb %al,(%rdx) 269 leaq 1(%rdx),%rdx 270 decq %rcx 271 jnz L$oop_dec_pad 272 273 L$done_dec: 274 movq %rdx,%rax 275 .byte 0xf3,0xc3 276 277
Note:
See TracChangeset
for help on using the changeset viewer.