diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2020-03-23 18:01:11 +0000 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@linaro.org> | 2020-03-24 20:53:16 +0000 |
commit | 2a0eaca3e9c88eb82579c75b393bd11d84d4da61 (patch) | |
tree | 6ffb0cff1b2cf69bf90748bba7374d198cd722b3 | |
parent | 8001f59c82b98c4348e00183fe83621d649dafca (diff) | |
download | gcc-2a0eaca3e9c88eb82579c75b393bd11d84d4da61.zip gcc-2a0eaca3e9c88eb82579c75b393bd11d84d4da61.tar.gz gcc-2a0eaca3e9c88eb82579c75b393bd11d84d4da61.tar.bz2 |
[testsuite,arm] cmp-2.c: Move double-precision tests to cmp-3.c
Parts of the cmp-2.c test rely on double-precision support, making the
test fail on targets where the FPU supports single-precision only.
Split the test into single-precision (cmp-2.c) and double-precision
tests (cmp-3.c).
2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
gcc/testsuite/
* gcc.target/arm/cmp-2.c: Move double-precision tests to...
* gcc.target/arm/cmp-3.c: ...here (new file)
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/cmp-2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/cmp-3.c | 49 |
3 files changed, 55 insertions, 3 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index adce8ed..149ee02 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2020-03-24 Christophe Lyon <christophe.lyon@linaro.org> + * gcc.target/arm/cmp-2.c: Move double-precision tests to... + * gcc.target/arm/cmp-3.c: ...here (new file) + +2020-03-24 Christophe Lyon <christophe.lyon@linaro.org> + * lib/target-supports.exp (check_effective_target_arm_fp_dp_ok_nocache): New. (check_effective_target_arm_fp_dp_ok): New. diff --git a/gcc/testsuite/gcc.target/arm/cmp-2.c b/gcc/testsuite/gcc.target/arm/cmp-2.c index 70e4509..c61487d 100644 --- a/gcc/testsuite/gcc.target/arm/cmp-2.c +++ b/gcc/testsuite/gcc.target/arm/cmp-2.c @@ -30,9 +30,7 @@ int x, y; TEST_EXPR (NAME##_cr, (TYPE a1), OPERATOR (100, a1)) #define TEST_OP(NAME, OPERATOR) \ - TEST (f_##NAME, float, OPERATOR) \ - TEST (d_##NAME, double, OPERATOR) \ - TEST (ld_##NAME, long double, OPERATOR) + TEST (f_##NAME, float, OPERATOR) TEST_OP (eq, EQ) TEST_OP (ne, NE) diff --git a/gcc/testsuite/gcc.target/arm/cmp-3.c b/gcc/testsuite/gcc.target/arm/cmp-3.c new file mode 100644 index 0000000..70a1168 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/cmp-3.c @@ -0,0 +1,49 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_fp_dp_ok } */ +/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */ +/* { dg-options "-O" } */ +/* { dg-add-options arm_fp_dp } */ +/* { dg-final { scan-assembler-not "\tbl\t" } } */ +/* { dg-final { scan-assembler-not "__aeabi" } } */ +int x, y; + +#define EQ(X, Y) ((X) == (Y)) +#define NE(X, Y) ((X) != (Y)) +#define LT(X, Y) ((X) < (Y)) +#define GT(X, Y) ((X) > (Y)) +#define LE(X, Y) ((X) <= (Y)) +#define GE(X, Y) ((X) >= (Y)) + +#define TEST_EXPR(NAME, ARGS, EXPR) \ + int NAME##1 ARGS { return (EXPR); } \ + int NAME##2 ARGS { return !(EXPR); } \ + int NAME##3 ARGS { return (EXPR) ? x : y; } \ + void NAME##4 ARGS { if (EXPR) x++; } \ + void NAME##5 ARGS { if (!(EXPR)) x++; } + +#define TEST(NAME, TYPE, OPERATOR) \ + TEST_EXPR (NAME##_rr, (TYPE a1, TYPE a2), OPERATOR (a1, a2)) \ + TEST_EXPR (NAME##_rm, (TYPE a1, TYPE *a2), OPERATOR (a1, *a2)) \ + TEST_EXPR (NAME##_mr, (TYPE *a1, TYPE a2), OPERATOR (*a1, a2)) \ + TEST_EXPR (NAME##_mm, (TYPE *a1, TYPE *a2), OPERATOR (*a1, *a2)) \ + TEST_EXPR (NAME##_rc, (TYPE a1), OPERATOR (a1, 100)) \ + TEST_EXPR (NAME##_cr, (TYPE a1), OPERATOR (100, a1)) + +#define TEST_OP(NAME, OPERATOR) \ + TEST (d_##NAME, double, OPERATOR) \ + TEST (ld_##NAME, long double, OPERATOR) + +TEST_OP (eq, EQ) +TEST_OP (ne, NE) +TEST_OP (lt, LT) +TEST_OP (gt, GT) +TEST_OP (le, LE) +TEST_OP (ge, GE) +TEST_OP (blt, __builtin_isless) +TEST_OP (bgt, __builtin_isgreater) +TEST_OP (ble, __builtin_islessequal) +TEST_OP (bge, __builtin_isgreaterequal) +/* This one should be expanded into separate ordered and equality + comparisons. */ +TEST_OP (blg, __builtin_islessgreater) +TEST_OP (bun, __builtin_isunordered) |