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.

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




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