1 # Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
8 # * Redistributions of source code must retain copyright notices,
9 # this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # * Neither the name of the Andy Polyakov nor the names of its
17 # copyright holder and contributors may be used to endorse or
18 # promote products derived from this software without specific
19 # prior written permission.
21 # ALTERNATIVELY, provided that this notice is retained in full, this
22 # product may be distributed under the terms of the GNU General Public
23 # License (GPL), in which case the provisions of the GPL apply INSTEAD OF
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 # *** This file is auto-generated ***
40 .file "devel/perlasm/e_padlock-x86.s"
42 .globl _padlock_capability
43 .def _padlock_capability; .scl 2; .type 32; .endef
46 .L_padlock_capability_begin:
92 .globl _padlock_key_bswap
93 .def _padlock_key_bswap; .scl 2; .type 32; .endef
96 .L_padlock_key_bswap_begin:
107 .globl _padlock_verify_context
108 .def _padlock_verify_context; .scl 2; .type 32; .endef
110 _padlock_verify_context:
111 .L_padlock_verify_context_begin:
113 leal .Lpadlock_saved_context,%eax
115 call __padlock_verify_ctx
116 .L002verify_pic_point:
119 .def __padlock_verify_ctx; .scl 3; .type 32; .endef
121 __padlock_verify_ctx:
131 .globl _padlock_reload_key
132 .def _padlock_reload_key; .scl 2; .type 32; .endef
135 .L_padlock_reload_key_begin:
139 .globl _padlock_aes_block
140 .def _padlock_aes_block; .scl 2; .type 32; .endef
143 .L_padlock_aes_block_begin:
158 .globl _padlock_ecb_encrypt
159 .def _padlock_ecb_encrypt; .scl 2; .type 32; .endef
161 _padlock_ecb_encrypt:
162 .L_padlock_ecb_encrypt_begin:
175 leal .Lpadlock_saved_context,%eax
178 call __padlock_verify_ctx
201 leal (%eax,%ebp,1),%esp
220 jz .L008ecb_unaligned_tail
232 jz .L009ecb_inp_aligned
238 .L009ecb_inp_aligned:
246 jz .L010ecb_out_aligned
252 .L010ecb_out_aligned:
262 .L008ecb_unaligned_tail:
293 leal (%esi,%ecx,1),%ebp
302 jz .L015ecb_aligned_tail
309 .L015ecb_aligned_tail:
336 .globl _padlock_cbc_encrypt
337 .def _padlock_cbc_encrypt; .scl 2; .type 32; .endef
339 _padlock_cbc_encrypt:
340 .L_padlock_cbc_encrypt_begin:
353 leal .Lpadlock_saved_context,%eax
356 call __padlock_verify_ctx
379 leal (%eax,%ebp,1),%esp
398 jz .L020cbc_unaligned_tail
410 jz .L021cbc_inp_aligned
416 .L021cbc_inp_aligned:
422 movaps %xmm0,-16(%edx)
426 jz .L022cbc_out_aligned
432 .L022cbc_out_aligned:
442 .L020cbc_unaligned_tail:
473 leal (%esi,%ecx,1),%ebp
482 jz .L027cbc_aligned_tail
488 movaps %xmm0,-16(%edx)
491 .L027cbc_aligned_tail:
518 .globl _padlock_cfb_encrypt
519 .def _padlock_cfb_encrypt; .scl 2; .type 32; .endef
521 _padlock_cfb_encrypt:
522 .L_padlock_cfb_encrypt_begin:
535 leal .Lpadlock_saved_context,%eax
538 call __padlock_verify_ctx
561 leal (%eax,%ebp,1),%esp
579 jz .L032cfb_inp_aligned
585 .L032cfb_inp_aligned:
591 movaps %xmm0,-16(%edx)
595 jz .L033cfb_out_aligned
601 .L033cfb_out_aligned:
629 movaps %xmm0,-16(%edx)
639 .globl _padlock_ofb_encrypt
640 .def _padlock_ofb_encrypt; .scl 2; .type 32; .endef
642 _padlock_ofb_encrypt:
643 .L_padlock_ofb_encrypt_begin:
656 leal .Lpadlock_saved_context,%eax
659 call __padlock_verify_ctx
682 leal (%eax,%ebp,1),%esp
700 jz .L041ofb_inp_aligned
706 .L041ofb_inp_aligned:
712 movaps %xmm0,-16(%edx)
716 jz .L042ofb_out_aligned
722 .L042ofb_out_aligned:
750 movaps %xmm0,-16(%edx)
760 .globl _padlock_ctr32_encrypt
761 .def _padlock_ctr32_encrypt; .scl 2; .type 32; .endef
763 _padlock_ctr32_encrypt:
764 .L_padlock_ctr32_encrypt_begin:
777 leal .Lpadlock_saved_context,%eax
780 call __padlock_verify_ctx
781 .L047ctr32_pic_point:
794 leal (%eax,%ebp,1),%esp
813 movl %ecx,12(%esp,%edi,1)
815 movq %mm0,(%esp,%edi,1)
817 movl %eax,8(%esp,%edi,1)
821 jb .L049ctr32_prepare
835 movups (%esi,%ecx,1),%xmm1
837 pxor -16(%esp,%ecx,1),%xmm1
838 movups %xmm1,-16(%edi,%ecx,1)
866 .globl _padlock_xstore
867 .def _padlock_xstore; .scl 2; .type 32; .endef
870 .L_padlock_xstore_begin:
877 .def __win32_segv_handler; .scl 3; .type 32; .endef
879 __win32_segv_handler:
883 cmpl $3221225477,(%edx)
889 .globl _padlock_sha1_oneshot
890 .def _padlock_sha1_oneshot; .scl 2; .type 32; .endef
892 _padlock_sha1_oneshot:
893 .L_padlock_sha1_oneshot_begin:
900 pushl __win32_segv_handler
916 .byte 100,143,5,0,0,0,0
924 .globl _padlock_sha1_blocks
925 .def _padlock_sha1_blocks; .scl 2; .type 32; .endef
927 _padlock_sha1_blocks:
928 .L_padlock_sha1_blocks_begin:
953 .globl _padlock_sha256_oneshot
954 .def _padlock_sha256_oneshot; .scl 2; .type 32; .endef
956 _padlock_sha256_oneshot:
957 .L_padlock_sha256_oneshot_begin:
964 pushl __win32_segv_handler
971 movups 16(%edi),%xmm1
974 movaps %xmm1,16(%esp)
978 movaps 16(%esp),%xmm1
980 .byte 100,143,5,0,0,0,0
984 movups %xmm1,16(%edi)
988 .globl _padlock_sha256_blocks
989 .def _padlock_sha256_blocks; .scl 2; .type 32; .endef
991 _padlock_sha256_blocks:
992 .L_padlock_sha256_blocks_begin:
1002 movups 16(%edi),%xmm1
1005 movaps %xmm1,16(%esp)
1007 .byte 243,15,166,208
1009 movaps 16(%esp),%xmm1
1013 movups %xmm1,16(%edi)
1017 .globl _padlock_sha512_blocks
1018 .def _padlock_sha512_blocks; .scl 2; .type 32; .endef
1020 _padlock_sha512_blocks:
1021 .L_padlock_sha512_blocks_begin:
1031 movups 16(%edi),%xmm1
1032 movups 32(%edi),%xmm2
1033 movups 48(%edi),%xmm3
1036 movaps %xmm1,16(%esp)
1037 movaps %xmm2,32(%esp)
1038 movaps %xmm3,48(%esp)
1039 .byte 243,15,166,224
1041 movaps 16(%esp),%xmm1
1042 movaps 32(%esp),%xmm2
1043 movaps 48(%esp),%xmm3
1047 movups %xmm1,16(%edi)
1048 movups %xmm2,32(%edi)
1049 movups %xmm3,48(%edi)
1053 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
1054 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
1055 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
1056 .byte 110,115,115,108,46,111,114,103,62,0
1060 .Lpadlock_saved_context: