We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent f13b811 commit 4cd3c37Copy full SHA for 4cd3c37
math/aarch64/advsimd/modf.c
@@ -17,12 +17,6 @@ float64x2_t VPCS_ATTR V_NAME_D1_L1 (modf) (float64x2_t x, double *out_int)
17
vst1q_f64 (out_int, res.val[1]);
18
return res.val[0];
19
}
20
-
21
-float64x2x2_t VPCS_ATTR V_NAME_D1_STRET (modf) (float64x2_t x)
22
-{
23
- return v_modf_inline (x);
24
-}
25
26
TEST_ULP (_ZGVnN2vl8_modf_frac, 0.0)
27
TEST_SYM_INTERVAL (_ZGVnN2vl8_modf_frac, 0, 1, 20000)
28
TEST_SYM_INTERVAL (_ZGVnN2vl8_modf_frac, 1, inf, 20000)
@@ -31,10 +25,3 @@ TEST_ULP (_ZGVnN2vl8_modf_int, 0.0)
31
TEST_SYM_INTERVAL (_ZGVnN2vl8_modf_int, 0, 1, 20000)
32
TEST_SYM_INTERVAL (_ZGVnN2vl8_modf_int, 1, inf, 20000)
33
34
-TEST_ULP (_ZGVnN2v_modf_stret_frac, 0.0)
35
-TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_frac, 0, 1, 20000)
36
-TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_frac, 1, inf, 20000)
37
38
-TEST_ULP (_ZGVnN2v_modf_stret_int, 0.0)
39
-TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_int, 0, 1, 20000)
40
-TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_int, 1, inf, 20000)
math/aarch64/advsimd/modf_stret.c
@@ -0,0 +1,25 @@
1
+/*
2
+ * Double-precision vector modf(x, *y) function (structure-return).
3
+ *
4
+ * Copyright (c) 2024-2025, Arm Limited.
5
+ * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception
6
+ */
7
+
8
+#include "v_math.h"
9
+#include "v_modf_inline.h"
10
+#include "test_sig.h"
11
+#include "test_defs.h"
12
13
+/* Modf algorithm. Produces exact values in all rounding modes. */
14
+float64x2x2_t VPCS_ATTR V_NAME_D1_STRET (modf) (float64x2_t x)
15
+{
16
+ return v_modf_inline (x);
+}
+TEST_ULP (_ZGVnN2v_modf_stret_frac, 0.0)
+TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_frac, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_frac, 1, inf, 20000)
+TEST_ULP (_ZGVnN2v_modf_stret_int, 0.0)
+TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_int, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVnN2v_modf_stret_int, 1, inf, 20000)
math/aarch64/advsimd/modff.c
@@ -19,23 +19,10 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1_L1 (modf) (float32x4_t x,
-float32x4x2_t VPCS_ATTR NOINLINE V_NAME_F1_STRET (modf) (float32x4_t x)
- return v_modff_inline (x);
TEST_ULP (_ZGVnN4vl4_modff_frac, 0.0)
TEST_SYM_INTERVAL (_ZGVnN4vl4_modff_frac, 0, 1, 20000)
29
TEST_SYM_INTERVAL (_ZGVnN4vl4_modff_frac, 1, inf, 20000)
30
TEST_ULP (_ZGVnN4vl4_modff_int, 0.0)
TEST_SYM_INTERVAL (_ZGVnN4vl4_modff_int, 0, 1, 20000)
TEST_SYM_INTERVAL (_ZGVnN4vl4_modff_int, 1, inf, 20000)
-TEST_ULP (_ZGVnN4v_modff_stret_frac, 0.0)
-TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_frac, 0, 1, 20000)
-TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_frac, 1, inf, 20000)
-TEST_ULP (_ZGVnN4v_modff_stret_int, 0.0)
-TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_int, 0, 1, 20000)
41
-TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_int, 1, inf, 20000)
math/aarch64/advsimd/modff_stret.c
+ * Single-precision vector modf(x, *y) function (structure-return).
+#include "v_modff_inline.h"
+/* Modff algorithm. Produces exact values in all rounding modes. */
+float32x4x2_t VPCS_ATTR NOINLINE V_NAME_F1_STRET (modf) (float32x4_t x)
+ return v_modff_inline (x);
+TEST_ULP (_ZGVnN4v_modff_stret_frac, 0.0)
+TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_frac, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_frac, 1, inf, 20000)
+TEST_ULP (_ZGVnN4v_modff_stret_int, 0.0)
+TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_int, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVnN4v_modff_stret_int, 1, inf, 20000)
math/aarch64/sve/modf.c
@@ -19,24 +19,11 @@ svfloat64_t SV_NAME_D1_L1 (modf) (svfloat64_t x, double *out_int,
return svget2 (res, 0);
-svfloat64x2_t SV_NAME_D1_STRET (modf) (svfloat64_t x, svbool_t pg)
- return sv_modf_inline (pg, x);
TEST_ULP (_ZGVsMxvl8_modf_frac, 0.0)
TEST_SYM_INTERVAL (_ZGVsMxvl8_modf_frac, 0, 1, 20000)
TEST_SYM_INTERVAL (_ZGVsMxvl8_modf_frac, 1, inf, 20000)
TEST_ULP (_ZGVsMxvl8_modf_int, 0.0)
TEST_SYM_INTERVAL (_ZGVsMxvl8_modf_int, 0, 1, 20000)
TEST_SYM_INTERVAL (_ZGVsMxvl8_modf_int, 1, inf, 20000)
-TEST_ULP (_ZGVsMxv_modf_stret_frac, 0.0)
-TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_frac, 0, 1, 20000)
-TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_frac, 1, inf, 20000)
-TEST_ULP (_ZGVsMxv_modf_stret_int, 0.0)
-TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_int, 0, 1, 20000)
-TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_int, 1, inf, 20000)
42
CLOSE_SVE_ATTR
math/aarch64/sve/modf_stret.c
@@ -0,0 +1,26 @@
+ * Double-precision SVE modf(x, *y) function (structure-return).
+ * Copyright (c) 2025, Arm Limited.
+#include "sv_math.h"
+#include "sv_modf_inline.h"
+svfloat64x2_t SV_NAME_D1_STRET (modf) (svfloat64_t x, svbool_t pg)
+ return sv_modf_inline (pg, x);
+TEST_ULP (_ZGVsMxv_modf_stret_frac, 0.0)
+TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_frac, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_frac, 1, inf, 20000)
+TEST_ULP (_ZGVsMxv_modf_stret_int, 0.0)
+TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_int, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVsMxv_modf_stret_int, 1, inf, 20000)
+CLOSE_SVE_ATTR
math/aarch64/sve/modff.c
@@ -19,24 +19,11 @@ svfloat32_t SV_NAME_F1_L1 (modf) (svfloat32_t x, float *out_int,
-svfloat32x2_t SV_NAME_F1_STRET (modf) (svfloat32_t x, svbool_t pg)
- return sv_modff_inline (pg, x);
TEST_ULP (_ZGVsMxvl4_modff_frac, 0.0)
TEST_SYM_INTERVAL (_ZGVsMxvl4_modff_frac, 0, 1, 20000)
TEST_SYM_INTERVAL (_ZGVsMxvl4_modff_frac, 1, inf, 20000)
TEST_ULP (_ZGVsMxvl4_modff_int, 0.0)
TEST_SYM_INTERVAL (_ZGVsMxvl4_modff_int, 0, 1, 20000)
TEST_SYM_INTERVAL (_ZGVsMxvl4_modff_int, 1, inf, 20000)
-TEST_ULP (_ZGVsMxv_modff_stret_frac, 0.0)
-TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_frac, 0, 1, 20000)
-TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_frac, 1, inf, 20000)
-TEST_ULP (_ZGVsMxv_modff_stret_int, 0.0)
-TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_int, 0, 1, 20000)
-TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_int, 1, inf, 20000)
math/aarch64/sve/modff_stret.c
+ * Single-precision SVE modff(x, *y) function (structure-return).
+#include "sv_modff_inline.h"
+svfloat32x2_t SV_NAME_F1_STRET (modf) (svfloat32_t x, svbool_t pg)
+ return sv_modff_inline (pg, x);
+TEST_ULP (_ZGVsMxv_modff_stret_frac, 0.0)
+TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_frac, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_frac, 1, inf, 20000)
+TEST_ULP (_ZGVsMxv_modff_stret_int, 0.0)
+TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_int, 0, 1, 20000)
+TEST_SYM_INTERVAL (_ZGVsMxv_modff_stret_int, 1, inf, 20000)
0 commit comments