1 /* Function sincos vectorized with SSE2.
2 Copyright (C) 2014-2021 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 <https://www.gnu.org/licenses/>. */
20 #include "svml_d_wrapper_impl.h"
23 ENTRY (_ZGVbN2vl8l8_sincos)
24 WRAPPER_IMPL_SSE2_fFF sincos
25 END (_ZGVbN2vl8l8_sincos)
26 libmvec_hidden_def (_ZGVbN2vl8l8_sincos)
28 /* SSE2 ISA version as wrapper to scalar (for vector
29 function declared with #pragma omp declare simd notinbranch). */
30 .macro WRAPPER_IMPL_SSE2_fFF_vvv callee
33 cfi_adjust_cfa_offset(88)
34 movaps %xmm0, 64(%rsp)
36 movdqa %xmm1, 32(%rdi)
38 movdqa %xmm2, 32(%rsi)
39 call JUMPTARGET(\callee)
43 call JUMPTARGET(\callee)
57 cfi_adjust_cfa_offset(-88)
61 .cfi_def_cfa_offset 16
64 .cfi_def_cfa_offset 24
67 .cfi_def_cfa_offset 112
69 movaps %xmm1, 32(%esp)
71 movaps %xmm2, 16(%esp)
75 call JUMPTARGET(\callee)
79 call JUMPTARGET(\callee)
80 movdqa 32(%esp), %xmm1
83 movdqa 16(%esp), %xmm2
86 pextrd $1, %xmm1, %eax
92 pextrd $1, %xmm2, %eax
95 .cfi_def_cfa_offset 24
97 .cfi_def_cfa_offset 16
104 ENTRY (_ZGVbN2vvv_sincos)
105 WRAPPER_IMPL_SSE2_fFF_vvv sincos
106 END (_ZGVbN2vvv_sincos)
108 #ifndef USE_MULTIARCH
109 libmvec_hidden_def (_ZGVbN2vvv_sincos)