1 /* Function sincosf vectorized in AVX ISA as wrapper to SSE4 ISA version.
2 Copyright (C) 2014-2018 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
20 #include "svml_s_wrapper_impl.h"
23 ENTRY (_ZGVcN8vl4l4_sincosf)
24 WRAPPER_IMPL_AVX_fFF _ZGVbN4vl4l4_sincosf
25 END (_ZGVcN8vl4l4_sincosf)
27 /* AVX ISA version as wrapper to SSE ISA version (for vector
28 function declared with #pragma omp declare simd notinbranch). */
29 .macro WRAPPER_IMPL_AVX_fFF_vvv callee
35 vmovups %ymm0, 64(%rsp)
37 vmovdqu %xmm1, 96(%rdi)
38 vmovdqu %xmm2, 112(%rdi)
39 vmovdqu %xmm3, 128(%rdi)
40 vmovdqu %xmm4, 144(%rdi)
41 vmovdqu %xmm5, 160(%rdi)
43 vmovdqu %xmm6, 144(%rsi)
44 vmovdqu %xmm7, 160(%rsi)
46 call HIDDEN_JUMPTARGET(\callee)
47 vmovdqu 80(%rsp), %xmm0
50 call HIDDEN_JUMPTARGET(\callee)
108 .cfi_escape 0x10,0x6,0x2,0x76,0
113 .cfi_escape 0xf,0x3,0x76,0x70,0x6
114 .cfi_escape 0x10,0xc,0x2,0x76,0x78
115 leal -112(%rbp), %edi
118 .cfi_escape 0x10,0x3,0x2,0x76,0x68
121 vmovaps %xmm1, -128(%ebp)
122 vmovaps %xmm2, -144(%ebp)
123 vmovaps %xmm3, -160(%ebp)
124 vmovaps %xmm4, -176(%ebp)
125 vmovaps %ymm0, -208(%ebp)
127 call HIDDEN_JUMPTARGET(\callee)
129 vmovups -192(%ebp), %xmm0
131 call HIDDEN_JUMPTARGET(\callee)
132 movq -128(%ebp), %rax
133 vmovss -112(%ebp), %xmm0
134 vmovdqa -128(%ebp), %xmm7
135 vmovdqa -144(%ebp), %xmm3
137 vmovss -108(%ebp), %xmm0
138 vpextrd $1, %xmm7, %eax
140 movq -120(%ebp), %rax
141 vmovss -104(%ebp), %xmm0
143 vmovss -100(%ebp), %xmm0
144 vpextrd $3, %xmm7, %eax
145 vmovdqa -160(%ebp), %xmm7
147 movq -144(%ebp), %rax
148 vmovss -96(%ebp), %xmm0
150 vmovss -92(%ebp), %xmm0
151 vpextrd $1, %xmm3, %eax
153 movq -136(%ebp), %rax
154 vmovss -88(%ebp), %xmm0
156 vmovss -84(%ebp), %xmm0
157 vpextrd $3, %xmm3, %eax
159 movq -160(%ebp), %rax
160 vmovss -80(%ebp), %xmm0
162 vmovss -76(%ebp), %xmm0
163 vpextrd $1, %xmm7, %eax
165 movq -152(%ebp), %rax
166 vmovss -72(%ebp), %xmm0
168 vmovss -68(%ebp), %xmm0
169 vpextrd $3, %xmm7, %eax
171 movq -176(%ebp), %rax
172 vmovss -64(%ebp), %xmm0
173 vmovdqa -176(%ebp), %xmm3
175 vmovss -60(%ebp), %xmm0
176 vpextrd $1, %xmm3, %eax
178 movq -168(%ebp), %rax
179 vmovss -56(%ebp), %xmm0
181 vmovss -52(%ebp), %xmm0
182 vpextrd $3, %xmm3, %eax
196 ENTRY (_ZGVcN8vvv_sincosf)
197 WRAPPER_IMPL_AVX_fFF_vvv _ZGVbN4vl4l4_sincosf
198 END (_ZGVcN8vvv_sincosf)