> But I'm afraid I have no idea how is this supposed to work on > non-bitint targets or where __BITINT_MAXWIDTH__ is smaller than 9020. > There is no loop at all there, so what should be vectorized? >
Yeah It was giving an unresolved and I didn't notice in diff. > I'd say introduce > # Return 1 if the target supports _BitInt(65535), 0 otherwise. > > proc check_effective_target_bitint65535 { } { > return [check_no_compiler_messages bitint65535 object { > _BitInt (2) a = 1wb; > unsigned _BitInt (65535) b = 0uwb; > } "-std=c23"] > } > > after bitint575 effective target and use it in the test. > Sure, how's: -- 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/ChangeLog: * doc/sourcebuild.texi (check_effective_target_bitint65535): New. 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. * lib/target-supports.exp (bitint, bitint128, bitint575, bitint65535): Document them. ---inline copy of patch --- diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index bd62b21f3b725936eae34c22159ccbc9db40873f..6fbb102f9971d54d66d77dcee8f10a1b57aa6e5a 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -2864,6 +2864,18 @@ Target supports Graphite optimizations. @item fixed_point Target supports fixed-point extension to C. +@item bitint +Target supports _BitInt(N). + +@item bitint128 +Target supports _BitInt(128). + +@item bitint575 +Target supports _BitInt(575). + +@item bitint65535 +Target supports _BitInt(65535). + @item fopenacc Target supports OpenACC via @option{-fopenacc}. 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..e141e8a9277f89527e8aff809fe101fdd91a4c46 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,7 +1,8 @@ /* { 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 bitint65535 } */ + +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */ _BitInt(998) b; char c; diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index a9c76e0b290b19fd07574805bb2b87c86a5e9cf7..1ddcb3926a8d549b6a17b61e29e1d9836ecce897 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -3850,6 +3850,15 @@ proc check_effective_target_bitint575 { } { } "-std=c23"] } +# Return 1 if the target supports _BitInt(65535), 0 otherwise. + +proc check_effective_target_bitint65535 { } { + return [check_no_compiler_messages bitint65535 object { + _BitInt (2) a = 1wb; + unsigned _BitInt (65535) b = 0uwb; + } "-std=c23"] +} + # Return 1 if the target supports compiling decimal floating point, # 0 otherwise.
rb18146.patch
Description: rb18146.patch