Add more corner case tests.
diff --git a/ref_vabd.c b/ref_vabd.c
index 118211d..197de0f 100644
--- a/ref_vabd.c
+++ b/ref_vabd.c
@@ -30,10 +30,13 @@
#endif
#include "stm-arm-neon-ref.h"
+#include <math.h>
#define TEST_MSG "VABD/VABDQ"
void exec_vabd (void)
{
+ int i;
+
/* Basic test: v4=vabd(v1,v2), then store the result. */
#define TEST_VABD(Q, T1, T2, W, N) \
VECT_VAR(vector_res, T1, W, N) = \
@@ -113,4 +116,18 @@
TEST_VABD(q, float, f, 32, 4);
dump_results_hex (TEST_MSG);
+
+
+ /* Extra FP tests with special values (-0.0, ....) */
+ TEST_VDUP(vector1, q, float, f, 32, 4, -0.0f);
+ TEST_VDUP(vector2, q, float, f, 32, 4, 0.0);
+ TEST_VABD(q, float, f, 32, 4);
+ DUMP_FP(TEST_MSG " FP special (-0.0)", float, 32, 4, PRIx32);
+
+
+ /* Extra FP tests with special values (-0.0, ....) */
+ TEST_VDUP(vector1, q, float, f, 32, 4, 0.0f);
+ TEST_VDUP(vector2, q, float, f, 32, 4, -0.0);
+ TEST_VABD(q, float, f, 32, 4);
+ DUMP_FP(TEST_MSG " FP special (-0.0)", float, 32, 4, PRIx32);
}