VirtualBox

Changeset 100982 in vbox


Ignore:
Timestamp:
Aug 25, 2023 4:53:54 PM (21 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158923
Message:

openssl-3.1.0: poly1305-x86_64.S bugref:10418

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
     35L$no_key:
     36        .byte   0xf3,0xc3
     37
     38
     39
     40
     41.p2align        5
     42_poly1305_blocks:
     43
     44L$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
     60L$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
     78L$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
     143L$no_data:
     144L$blocks_epilogue:
     145        .byte   0xf3,0xc3
     146
     147
     148
     149
     150.p2align        5
     151_poly1305_emit:
     152
     153L$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
     188L$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
     200L$tail_enc:
     201        movq    $16,%rcx
     202        subq    %r10,%rcx
     203        xorl    %eax,%eax
     204L$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
     214L$oop_enc_pad:
     215        movb    %al,(%rdx)
     216        leaq    1(%rdx),%rdx
     217        decq    %rcx
     218        jnz     L$oop_enc_pad
     219
     220L$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
     237L$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
     251L$tail_dec:
     252        movq    $16,%rcx
     253        subq    %r10,%rcx
     254        xorl    %eax,%eax
     255        xorq    %r11,%r11
     256L$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
     267L$oop_dec_pad:
     268        movb    %al,(%rdx)
     269        leaq    1(%rdx),%rdx
     270        decq    %rcx
     271        jnz     L$oop_dec_pad
     272
     273L$done_dec:
     274        movq    %rdx,%rax
     275        .byte   0xf3,0xc3
     276
     277
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette