summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormshawcroft <mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4>2014-01-20 18:30:32 +0000
committermshawcroft <mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4>2014-01-20 18:30:32 +0000
commitf04d0d9172f2b8960135898e455d65be74e61de2 (patch)
treed74f677b98a2dfa9b2194ad6c8b44a7c45a2b0dd
parentb65555c1ab475f6a3757b4ecb1a5970e66bde20b (diff)
downloadppe42-gcc-f04d0d9172f2b8960135898e455d65be74e61de2.tar.gz
ppe42-gcc-f04d0d9172f2b8960135898e455d65be74e61de2.zip
[AArch64] vneg floating point testcase BE fixed.
2013-01-20 Alex Velenko <Alex.Velenko@arm.com> * gcc.target/aarch64/vneg_f.c (STORE_INST): New macro. (RUN_TEST): Use new macro. (INDEX64_32): Delete. (INDEX64_64): Likewise. (INDEX128_32): Likewise. (INDEX128_64): Likewise. (INDEX): Likewise. (test_vneg_f32): Use fixed RUN_TEST. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206850 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog11
-rw-r--r--gcc/testsuite/gcc.target/aarch64/vneg_f.c117
2 files changed, 68 insertions, 60 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4c1f7e824db..8f66ea95642 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2013-01-20 Alex Velenko <Alex.Velenko@arm.com>
+
+ * gcc.target/aarch64/vneg_f.c (STORE_INST): New macro.
+ (RUN_TEST): Use new macro.
+ (INDEX64_32): Delete.
+ (INDEX64_64): Likewise.
+ (INDEX128_32): Likewise.
+ (INDEX128_64): Likewise.
+ (INDEX): Likewise.
+ (test_vneg_f32): Use fixed RUN_TEST.
+
2014-01-20 Richard Biener <rguenther@suse.de>
PR middle-end/59860
diff --git a/gcc/testsuite/gcc.target/aarch64/vneg_f.c b/gcc/testsuite/gcc.target/aarch64/vneg_f.c
index 1eaf21d34eb..01503028547 100644
--- a/gcc/testsuite/gcc.target/aarch64/vneg_f.c
+++ b/gcc/testsuite/gcc.target/aarch64/vneg_f.c
@@ -44,34 +44,27 @@ extern void abort (void);
#define DATA_TYPE_64 double
#define DATA_TYPE(data_len) DATA_TYPE_##data_len
-#define INDEX64_32 [i]
-#define INDEX64_64
-#define INDEX128_32 [i]
-#define INDEX128_64 [i]
-#define INDEX(reg_len, data_len) \
- CONCAT1 (INDEX, reg_len##_##data_len)
-
+#define STORE_INST(reg_len, data_len) \
+ CONCAT1 (vst1, POSTFIX (reg_len, data_len))
#define LOAD_INST(reg_len, data_len) \
CONCAT1 (vld1, POSTFIX (reg_len, data_len))
#define NEG_INST(reg_len, data_len) \
CONCAT1 (vneg, POSTFIX (reg_len, data_len))
#define INHIB_OPTIMIZATION asm volatile ("" : : : "memory")
-
-#define RUN_TEST(test_set, reg_len, data_len, n, a, b) \
+#define RUN_TEST(test_set, reg_len, data_len, n, a, b, c) \
{ \
int i; \
(a) = LOAD_INST (reg_len, data_len) (test_set); \
(b) = NEG_INST (reg_len, data_len) (a); \
+ STORE_INST (reg_len, data_len) (c, b); \
for (i = 0; i < n; i++) \
{ \
DATA_TYPE (data_len) diff; \
INHIB_OPTIMIZATION; \
- diff \
- = a INDEX (reg_len, data_len) \
- + b INDEX (reg_len, data_len); \
+ diff = test_set[i] + c[i]; \
if (diff > EPSILON) \
- return 1; \
+ return 1; \
} \
}
@@ -84,28 +77,29 @@ extern void abort (void);
int
test_vneg_f32 ()
{
- float test_set0[2] = { TEST0, TEST1 };
- float test_set1[2] = { TEST2, TEST3 };
- float test_set2[2] = { VAR_MAX, VAR_MIN };
- float test_set3[2] = { INFINITY, NAN };
-
float32x2_t a;
float32x2_t b;
+ float32_t c[2];
- RUN_TEST (test_set0, 64, 32, 2, a, b);
- RUN_TEST (test_set1, 64, 32, 2, a, b);
- RUN_TEST (test_set2, 64, 32, 2, a, b);
- RUN_TEST (test_set3, 64, 32, 0, a, b);
+ float32_t test_set0[2] = { TEST0, TEST1 };
+ float32_t test_set1[2] = { TEST2, TEST3 };
+ float32_t test_set2[2] = { VAR_MAX, VAR_MIN };
+ float32_t test_set3[2] = { INFINITY, NAN };
+
+ RUN_TEST (test_set0, 64, 32, 2, a, b, c);
+ RUN_TEST (test_set1, 64, 32, 2, a, b, c);
+ RUN_TEST (test_set2, 64, 32, 2, a, b, c);
+ RUN_TEST (test_set3, 64, 32, 0, a, b, c);
/* Since last test cannot be checked in a uniform way by adding
negation result to original value, the number of lanes to be
checked in RUN_TEST is 0 (last argument). Instead, result
will be checked manually. */
- if (b[0] != -INFINITY)
+ if (c[0] != -INFINITY)
return 1;
- if (!__builtin_isnan (b[1]))
+ if (!__builtin_isnan (c[1]))
return 1;
return 0;
@@ -130,37 +124,38 @@ test_vneg_f64 ()
{
float64x1_t a;
float64x1_t b;
-
- double test_set0[1] = { TEST0 };
- double test_set1[1] = { TEST1 };
- double test_set2[1] = { TEST2 };
- double test_set3[1] = { TEST3 };
- double test_set4[1] = { VAR_MAX };
- double test_set5[1] = { VAR_MIN };
- double test_set6[1] = { INFINITY };
- double test_set7[1] = { NAN };
-
- RUN_TEST (test_set0, 64, 64, 1, a, b);
- RUN_TEST (test_set1, 64, 64, 1, a, b);
- RUN_TEST (test_set2, 64, 64, 1, a, b);
- RUN_TEST (test_set3, 64, 64, 1, a, b);
- RUN_TEST (test_set4, 64, 64, 1, a, b);
- RUN_TEST (test_set5, 64, 64, 1, a, b);
- RUN_TEST (test_set6, 64, 64, 0, a, b);
+ float64_t c[1];
+
+ float64_t test_set0[1] = { TEST0 };
+ float64_t test_set1[1] = { TEST1 };
+ float64_t test_set2[1] = { TEST2 };
+ float64_t test_set3[1] = { TEST3 };
+ float64_t test_set4[1] = { VAR_MAX };
+ float64_t test_set5[1] = { VAR_MIN };
+ float64_t test_set6[1] = { INFINITY };
+ float64_t test_set7[1] = { NAN };
+
+ RUN_TEST (test_set0, 64, 64, 1, a, b, c);
+ RUN_TEST (test_set1, 64, 64, 1, a, b, c);
+ RUN_TEST (test_set2, 64, 64, 1, a, b, c);
+ RUN_TEST (test_set3, 64, 64, 1, a, b, c);
+ RUN_TEST (test_set4, 64, 64, 1, a, b, c);
+ RUN_TEST (test_set5, 64, 64, 1, a, b, c);
+ RUN_TEST (test_set6, 64, 64, 0, a, b, c);
/* Since last test cannot be checked in a uniform way by adding
negation result to original value, the number of lanes to be
checked in RUN_TEST is 0 (last argument). Instead, result
will be checked manually. */
- if (b != -INFINITY)
+ if (c[0] != -INFINITY)
return 1;
/* Same as above. */
- RUN_TEST (test_set7, 64, 64, 0, a, b);
+ RUN_TEST (test_set7, 64, 64, 0, a, b, c);
- if (!__builtin_isnan (b))
+ if (!__builtin_isnan (c[0]))
return 1;
return 0;
@@ -185,22 +180,23 @@ test_vnegq_f32 ()
{
float32x4_t a;
float32x4_t b;
+ float32_t c[4];
- float test_set0[4] = { TEST0, TEST1, TEST2, TEST3 };
- float test_set1[4] = { FLT_MAX, FLT_MIN, INFINITY, NAN };
+ float32_t test_set0[4] = { TEST0, TEST1, TEST2, TEST3 };
+ float32_t test_set1[4] = { FLT_MAX, FLT_MIN, INFINITY, NAN };
- RUN_TEST (test_set0, 128, 32, 4, a, b);
- RUN_TEST (test_set1, 128, 32, 2, a, b);
+ RUN_TEST (test_set0, 128, 32, 4, a, b, c);
+ RUN_TEST (test_set1, 128, 32, 2, a, b, c);
/* Since last test cannot be fully checked in a uniform way by
adding negation result to original value, the number of lanes
to be checked in RUN_TEST is 0 (last argument). Instead, result
will be checked manually. */
- if (b[2] != -INFINITY)
+ if (c[2] != -INFINITY)
return 1;
- if (!__builtin_isnan (b[3]))
+ if (!__builtin_isnan (c[3]))
return 1;
return 0;
@@ -225,26 +221,27 @@ test_vnegq_f64 ()
{
float64x2_t a;
float64x2_t b;
+ float64_t c[2];
- double test_set0[2] = { TEST0, TEST1 };
- double test_set1[2] = { TEST2, TEST3 };
- double test_set2[2] = { FLT_MAX, FLT_MIN };
- double test_set3[2] = { INFINITY, NAN };
+ float64_t test_set0[2] = { TEST0, TEST1 };
+ float64_t test_set1[2] = { TEST2, TEST3 };
+ float64_t test_set2[2] = { FLT_MAX, FLT_MIN };
+ float64_t test_set3[2] = { INFINITY, NAN };
- RUN_TEST (test_set0, 128, 64, 2, a, b);
- RUN_TEST (test_set1, 128, 64, 2, a, b);
- RUN_TEST (test_set2, 128, 64, 2, a, b);
- RUN_TEST (test_set3, 128, 64, 0, a, b);
+ RUN_TEST (test_set0, 128, 64, 2, a, b, c);
+ RUN_TEST (test_set1, 128, 64, 2, a, b, c);
+ RUN_TEST (test_set2, 128, 64, 2, a, b, c);
+ RUN_TEST (test_set3, 128, 64, 0, a, b, c);
/* Since last test cannot be checked in a uniform way by adding
negation result to original value, the number of lanes to be
checked in RUN_TEST is 0 (last argument). Instead, result
will be checked manually. */
- if (b[0] != -INFINITY)
+ if (c[0] != -INFINITY)
return 1;
- if (!__builtin_isnan (b[1]))
+ if (!__builtin_isnan (c[1]))
return 1;
return 0;
OpenPOWER on IntegriCloud