Hi All, This changes the tests I committed for PR113287 to also run on targets that don't support bitint.
Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no issues and tests run on both. Ok for master? Thanks, Tamar gcc/testsuite/ChangeLog: PR tree-optimization/113287 * gcc.dg/vect/vect-early-break_100-pr113287.c: Support non-bitint. * gcc.dg/vect/vect-early-break_99-pr113287.c: Likewise. --- inline copy of patch -- diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c b/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c index f908e5bc60779c148dc95bda3e200383d12b9e1e..05fb84e1d36d4d05f39e48e41fc70703074ecabd 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c @@ -1,28 +1,29 @@ /* { dg-add-options vect_early_break } */ /* { dg-require-effective-target vect_early_break } */ -/* { dg-require-effective-target vect_int } */ -/* { dg-require-effective-target bitint } */ +/* { dg-require-effective-target vect_long_long } */ + +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */ __attribute__((noipa)) void -bar (unsigned long *p) +bar (unsigned long long *p) { - __builtin_memset (p, 0, 142 * sizeof (unsigned long)); - p[17] = 0x50000000000UL; + __builtin_memset (p, 0, 142 * sizeof (unsigned long long)); + p[17] = 0x50000000000ULL; } __attribute__((noipa)) int foo (void) { - unsigned long r[142]; + unsigned long long r[142]; bar (r); - unsigned long v = ((long) r[0] >> 31); + unsigned long long v = ((long) r[0] >> 31); if (v + 1 > 1) return 1; - for (unsigned long i = 1; i <= 140; ++i) + for (unsigned long long i = 1; i <= 140; ++i) if (r[i] != v) return 1; - unsigned long w = r[141]; - if ((unsigned long) (((long) (w << 60)) >> 60) != v) + unsigned long long w = r[141]; + if ((unsigned long long) (((long) (w << 60)) >> 60) != v) return 1; return 0; } diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c b/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c index b92a8a268d803ab1656b4716b1a319ed4edc87a3..fb99ef39402ee7b3c6c564e7db5f5543a5f0c2e0 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c @@ -1,9 +1,18 @@ /* { dg-add-options vect_early_break } */ /* { dg-require-effective-target vect_early_break } */ -/* { dg-require-effective-target vect_int } */ -/* { dg-require-effective-target bitint } */ +/* { dg-require-effective-target vect_long_long } */ -_BitInt(998) b; +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */ + +#if __BITINT_MAXWIDTH__ >= 9020 +typedef _BitInt(9020) B9020; +typedef _BitInt(998) B998; +#else +typedef long long B998; +typedef long long B9020; +#endif + +B998 b; char c; char d; char e; @@ -14,7 +23,7 @@ char i; char j; void -foo(char y, _BitInt(9020) a, char *r) +foo(char y, B9020 a, char *r) { char x = __builtin_mul_overflow_p(a << sizeof(a), y, 0); x += c + d + e + f + g + h + i + j + b; @@ -26,7 +35,12 @@ main(void) { char x; foo(5, 5, &x); +#if __BITINT_MAXWIDTH__ >= 9020 if (x != 1) __builtin_abort(); +#else + if (x != 0) + __builtin_abort(); +#endif return 0; } --
diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c b/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c index f908e5bc60779c148dc95bda3e200383d12b9e1e..05fb84e1d36d4d05f39e48e41fc70703074ecabd 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_100-pr113287.c @@ -1,28 +1,29 @@ /* { dg-add-options vect_early_break } */ /* { dg-require-effective-target vect_early_break } */ -/* { dg-require-effective-target vect_int } */ -/* { dg-require-effective-target bitint } */ +/* { dg-require-effective-target vect_long_long } */ + +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */ __attribute__((noipa)) void -bar (unsigned long *p) +bar (unsigned long long *p) { - __builtin_memset (p, 0, 142 * sizeof (unsigned long)); - p[17] = 0x50000000000UL; + __builtin_memset (p, 0, 142 * sizeof (unsigned long long)); + p[17] = 0x50000000000ULL; } __attribute__((noipa)) int foo (void) { - unsigned long r[142]; + unsigned long long r[142]; bar (r); - unsigned long v = ((long) r[0] >> 31); + unsigned long long v = ((long) r[0] >> 31); if (v + 1 > 1) return 1; - for (unsigned long i = 1; i <= 140; ++i) + for (unsigned long long i = 1; i <= 140; ++i) if (r[i] != v) return 1; - unsigned long w = r[141]; - if ((unsigned long) (((long) (w << 60)) >> 60) != v) + unsigned long long w = r[141]; + if ((unsigned long long) (((long) (w << 60)) >> 60) != v) return 1; return 0; } diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c b/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c index b92a8a268d803ab1656b4716b1a319ed4edc87a3..fb99ef39402ee7b3c6c564e7db5f5543a5f0c2e0 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_99-pr113287.c @@ -1,9 +1,18 @@ /* { dg-add-options vect_early_break } */ /* { dg-require-effective-target vect_early_break } */ -/* { dg-require-effective-target vect_int } */ -/* { dg-require-effective-target bitint } */ +/* { dg-require-effective-target vect_long_long } */ -_BitInt(998) b; +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */ + +#if __BITINT_MAXWIDTH__ >= 9020 +typedef _BitInt(9020) B9020; +typedef _BitInt(998) B998; +#else +typedef long long B998; +typedef long long B9020; +#endif + +B998 b; char c; char d; char e; @@ -14,7 +23,7 @@ char i; char j; void -foo(char y, _BitInt(9020) a, char *r) +foo(char y, B9020 a, char *r) { char x = __builtin_mul_overflow_p(a << sizeof(a), y, 0); x += c + d + e + f + g + h + i + j + b; @@ -26,7 +35,12 @@ main(void) { char x; foo(5, 5, &x); +#if __BITINT_MAXWIDTH__ >= 9020 if (x != 1) __builtin_abort(); +#else + if (x != 0) + __builtin_abort(); +#endif return 0; }