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 ()