Tamar Christina <tamar.christ...@arm.com> writes:
> Hi All,
>
> Recently something in the midend had started inverting the branches by 
> inverting
> the condition and the branches.
>
> While this is fine, it makes it hard to actually test.  In RTL I disable
> scheduling and BB reordering to prevent this.  But in GIMPLE there seems to be
> nothing I can do.  __builtin_expect seems to have no impact on the change 
> since
> I suspect this is happening during expand where conditions can be flipped
> regardless of probability during compare_and_branch.
>
> Since the mid-end has plenty of correctness tests, this weakens the backend
> tests to just check that a correct looking sequence is emitted.
>
> Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.
>
> Ok for master?
>
> Thanks,
> Tamar
>
> gcc/testsuite/ChangeLog:
>
>       PR testsuite/113502
>       * gcc.target/aarch64/sve/vect-early-break-cbranch.c: Ignore exact 
> branch.
>       * gcc.target/aarch64/vect-early-break-cbranch.c: Likewise.

OK I guess, since I agree that the "polarity" of the branch isn't really the
thing that we're trying to test.  But the fact that even __builtin_expect
doesn't work seems like a bug.  Do we have a PR for that?  Might be worth
filing one (for GCC 15+) if we don't.

Thanks,
Richard

>
> --- inline copy of patch -- 
> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-early-break-cbranch.c 
> b/gcc/testsuite/gcc.target/aarch64/sve/vect-early-break-cbranch.c
> index 
> d15053553f94e7dce3540e21f0c1f0d39ea4f289..d7cef1105410be04ed67d1d3b800746267f205a8
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/sve/vect-early-break-cbranch.c
> +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-early-break-cbranch.c
> @@ -9,7 +9,7 @@ int b[N] = {0};
>  **   ...
>  **   cmpgt   p[0-9]+.s, p[0-9]+/z, z[0-9]+.s, #0
>  **   ptest   p[0-9]+, p[0-9]+.b
> -**   b.any   \.L[0-9]+
> +**   b.(any|none)    \.L[0-9]+
>  **   ...
>  */
>  void f1 ()
> @@ -26,7 +26,7 @@ void f1 ()
>  **   ...
>  **   cmpge   p[0-9]+.s, p[0-9]+/z, z[0-9]+.s, #0
>  **   ptest   p[0-9]+, p[0-9]+.b
> -**   b.any   \.L[0-9]+
> +**   b.(any|none)    \.L[0-9]+
>  **   ...
>  */
>  void f2 ()
> @@ -43,7 +43,7 @@ void f2 ()
>  **   ...
>  **   cmpeq   p[0-9]+.s, p[0-9]+/z, z[0-9]+.s, #0
>  **   ptest   p[0-9]+, p[0-9]+.b
> -**   b.any   \.L[0-9]+
> +**   b.(any|none)    \.L[0-9]+
>  **   ...
>  */
>  void f3 ()
> @@ -60,7 +60,7 @@ void f3 ()
>  **   ...
>  **   cmpne   p[0-9]+.s, p[0-9]+/z, z[0-9]+.s, #0
>  **   ptest   p[0-9]+, p[0-9]+.b
> -**   b.any   \.L[0-9]+
> +**   b.(any|none)    \.L[0-9]+
>  **   ...
>  */
>  void f4 ()
> @@ -77,7 +77,7 @@ void f4 ()
>  **   ...
>  **   cmplt   p[0-9]+.s, p7/z, z[0-9]+.s, #0
>  **   ptest   p[0-9]+, p[0-9]+.b
> -**   b.any   .L[0-9]+
> +**   b.(any|none)    .L[0-9]+
>  **   ...
>  */
>  void f5 ()
> @@ -94,7 +94,7 @@ void f5 ()
>  **   ...
>  **   cmple   p[0-9]+.s, p[0-9]+/z, z[0-9]+.s, #0
>  **   ptest   p[0-9]+, p[0-9]+.b
> -**   b.any   \.L[0-9]+
> +**   b.(any|none)    \.L[0-9]+
>  **   ...
>  */
>  void f6 ()
> diff --git a/gcc/testsuite/gcc.target/aarch64/vect-early-break-cbranch.c 
> b/gcc/testsuite/gcc.target/aarch64/vect-early-break-cbranch.c
> index 
> a5e7b94827dd70240d754a834f1d11750a9c27a9..673b781eb6d092f6311409797b20a971f4fae247
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/vect-early-break-cbranch.c
> +++ b/gcc/testsuite/gcc.target/aarch64/vect-early-break-cbranch.c
> @@ -15,7 +15,7 @@ int b[N] = {0};
>  **   cmgt    v[0-9]+.4s, v[0-9]+.4s, #0
>  **   umaxp   v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
>  **   fmov    x[0-9]+, d[0-9]+
> -**   cbnz    x[0-9]+, \.L[0-9]+
> +**   cbn?z   x[0-9]+, \.L[0-9]+
>  **   ...
>  */
>  void f1 ()
> @@ -34,7 +34,7 @@ void f1 ()
>  **   cmge    v[0-9]+.4s, v[0-9]+.4s, #0
>  **   umaxp   v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
>  **   fmov    x[0-9]+, d[0-9]+
> -**   cbnz    x[0-9]+, \.L[0-9]+
> +**   cbn?z   x[0-9]+, \.L[0-9]+
>  **   ...
>  */
>  void f2 ()
> @@ -53,7 +53,7 @@ void f2 ()
>  **   cmeq    v[0-9]+.4s, v[0-9]+.4s, #0
>  **   umaxp   v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
>  **   fmov    x[0-9]+, d[0-9]+
> -**   cbnz    x[0-9]+, \.L[0-9]+
> +**   cbn?z   x[0-9]+, \.L[0-9]+
>  **   ...
>  */
>  void f3 ()
> @@ -72,7 +72,7 @@ void f3 ()
>  **   cmtst   v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
>  **   umaxp   v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
>  **   fmov    x[0-9]+, d[0-9]+
> -**   cbnz    x[0-9]+, \.L[0-9]+
> +**   cbn?z   x[0-9]+, \.L[0-9]+
>  **   ...
>  */
>  void f4 ()
> @@ -91,7 +91,7 @@ void f4 ()
>  **   cmlt    v[0-9]+.4s, v[0-9]+.4s, #0
>  **   umaxp   v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
>  **   fmov    x[0-9]+, d[0-9]+
> -**   cbnz    x[0-9]+, \.L[0-9]+
> +**   cbn?z   x[0-9]+, \.L[0-9]+
>  **   ...
>  */
>  void f5 ()
> @@ -110,7 +110,7 @@ void f5 ()
>  **   cmle    v[0-9]+.4s, v[0-9]+.4s, #0
>  **   umaxp   v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
>  **   fmov    x[0-9]+, d[0-9]+
> -**   cbnz    x[0-9]+, \.L[0-9]+
> +**   cbn?z   x[0-9]+, \.L[0-9]+
>  **   ...
>  */
>  void f6 ()

Reply via email to