]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/intel-ipsec-mb/include/save_xmms.asm
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / spdk / intel-ipsec-mb / include / save_xmms.asm
1 ;;
2 ;; Copyright (c) 2012-2018, Intel Corporation
3 ;;
4 ;; Redistribution and use in source and binary forms, with or without
5 ;; modification, are permitted provided that the following conditions are met:
6 ;;
7 ;; * Redistributions of source code must retain the above copyright notice,
8 ;; this list of conditions and the following disclaimer.
9 ;; * Redistributions in binary form must reproduce the above copyright
10 ;; notice, this list of conditions and the following disclaimer in the
11 ;; documentation and/or other materials provided with the distribution.
12 ;; * Neither the name of Intel Corporation nor the names of its contributors
13 ;; may be used to endorse or promote products derived from this software
14 ;; without specific prior written permission.
15 ;;
16 ;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 ;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 ;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 ;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 ;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 ;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 ;; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 ;; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 ;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 ;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 ;;
27
28 %include "os.asm"
29
30 %ifdef LINUX
31 %define ARG1 rdi
32 %else
33 %define ARG1 rcx
34 %endif
35
36 section .text
37 ; void save_xmms(UINT128 array[10])
38 MKGLOBAL(save_xmms,function,internal)
39 save_xmms:
40 movdqa [ARG1 + 0*16], xmm6
41 movdqa [ARG1 + 1*16], xmm7
42 movdqa [ARG1 + 2*16], xmm8
43 movdqa [ARG1 + 3*16], xmm9
44 movdqa [ARG1 + 4*16], xmm10
45 movdqa [ARG1 + 5*16], xmm11
46 movdqa [ARG1 + 6*16], xmm12
47 movdqa [ARG1 + 7*16], xmm13
48 movdqa [ARG1 + 8*16], xmm14
49 movdqa [ARG1 + 9*16], xmm15
50 ret
51
52
53 ; void restore_xmms(UINT128 array[10])
54 MKGLOBAL(restore_xmms,function,internal)
55 restore_xmms:
56 movdqa xmm6, [ARG1 + 0*16]
57 movdqa xmm7, [ARG1 + 1*16]
58 movdqa xmm8, [ARG1 + 2*16]
59 movdqa xmm9, [ARG1 + 3*16]
60 movdqa xmm10, [ARG1 + 4*16]
61 movdqa xmm11, [ARG1 + 5*16]
62 movdqa xmm12, [ARG1 + 6*16]
63 movdqa xmm13, [ARG1 + 7*16]
64 movdqa xmm14, [ARG1 + 8*16]
65 movdqa xmm15, [ARG1 + 9*16]
66 ret
67
68
69 ; void save_xmms_avx(UINT128 array[10])
70 MKGLOBAL(save_xmms_avx,function,internal)
71 save_xmms_avx:
72 vmovdqa [ARG1 + 0*16], xmm6
73 vmovdqa [ARG1 + 1*16], xmm7
74 vmovdqa [ARG1 + 2*16], xmm8
75 vmovdqa [ARG1 + 3*16], xmm9
76 vmovdqa [ARG1 + 4*16], xmm10
77 vmovdqa [ARG1 + 5*16], xmm11
78 vmovdqa [ARG1 + 6*16], xmm12
79 vmovdqa [ARG1 + 7*16], xmm13
80 vmovdqa [ARG1 + 8*16], xmm14
81 vmovdqa [ARG1 + 9*16], xmm15
82 ret
83
84
85 ; void restore_xmms_avx(UINT128 array[10])
86 MKGLOBAL(restore_xmms_avx,function,internal)
87 restore_xmms_avx:
88 vmovdqa xmm6, [ARG1 + 0*16]
89 vmovdqa xmm7, [ARG1 + 1*16]
90 vmovdqa xmm8, [ARG1 + 2*16]
91 vmovdqa xmm9, [ARG1 + 3*16]
92 vmovdqa xmm10, [ARG1 + 4*16]
93 vmovdqa xmm11, [ARG1 + 5*16]
94 vmovdqa xmm12, [ARG1 + 6*16]
95 vmovdqa xmm13, [ARG1 + 7*16]
96 vmovdqa xmm14, [ARG1 + 8*16]
97 vmovdqa xmm15, [ARG1 + 9*16]
98 ret
99
100 %ifdef LINUX
101 section .note.GNU-stack noalloc noexec nowrite progbits
102 %endif