about summary refs log tree commit diff
path: root/sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h
diff options
context:
space:
mode:
authorJoe Ramsay <Joe.Ramsay@arm.com>2023-11-03 12:12:22 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2023-11-10 17:07:43 +0000
commitb07038c5d304a7afc312516ce0ff886a57bf3163 (patch)
tree34d0a8e9e4d170229e4385dd849883c9af5dbee9 /sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h
parentd30c39f80d19d62e8fd750c424ccb7eb06b617e5 (diff)
downloadglibc-b07038c5d304a7afc312516ce0ff886a57bf3163.tar.gz
glibc-b07038c5d304a7afc312516ce0ff886a57bf3163.tar.xz
glibc-b07038c5d304a7afc312516ce0ff886a57bf3163.zip
aarch64: Add vector implementations of atan2 routines
Diffstat (limited to 'sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h')
-rw-r--r--sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h b/sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h
index f8e6a3fb9d..9551a9ea6f 100644
--- a/sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h
+++ b/sysdeps/aarch64/fpu/test-vpcs-vector-wrapper.h
@@ -29,3 +29,17 @@
     TEST_VEC_LOOP (mr, VEC_LEN);                                              \
     return ((FLOAT) mr[0]);                                                   \
   }
+
+#define VPCS_VECTOR_WRAPPER_ff(scalar_func, vector_func)                      \
+  extern __attribute__ ((aarch64_vector_pcs))                                 \
+  VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);                                  \
+  FLOAT scalar_func (FLOAT x, FLOAT y)                                        \
+  {                                                                           \
+    int i;                                                                    \
+    VEC_TYPE mx, my;                                                          \
+    INIT_VEC_LOOP (mx, x, VEC_LEN);                                           \
+    INIT_VEC_LOOP (my, y, VEC_LEN);                                           \
+    VEC_TYPE mr = vector_func (mx, my);                                       \
+    TEST_VEC_LOOP (mr, VEC_LEN);                                              \
+    return ((FLOAT) mr[0]);                                                   \
+  }