Hi All,
The tests I recently added for early break fail in thumb mode
because in thumb mode `cbz/cbnz` exist and so the cmp+branch
is fused. This updates the testcases to accept either output.
Tested on arm-none-linux-gnueabihf with -mthumb/-marm.
Ok for master?
Thanks,
Tamar
gcc/testsuite/ChangeLog:
* gcc.target/arm/vect-early-break-cbranch.c: Accept thumb output.
--- inline copy of patch --
diff --git a/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
b/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
index
f57bbd8be428d75dcf35aa194b5892fe04124cf6..d5c6d56ec869b8fa868acb78d4c3f40b2a241953
100644
--- a/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
+++ b/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
@@ -16,8 +16,12 @@ int b[N] = {0};
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f1 ()
@@ -37,8 +41,12 @@ void f1 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f2 ()
@@ -58,8 +66,12 @@ void f2 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f3 ()
@@ -80,8 +92,12 @@ void f3 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f4 ()
@@ -101,8 +117,12 @@ void f4 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f5 ()
@@ -122,8 +142,12 @@ void f5 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f6 ()
--
diff --git a/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
b/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
index
f57bbd8be428d75dcf35aa194b5892fe04124cf6..d5c6d56ec869b8fa868acb78d4c3f40b2a241953
100644
--- a/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
+++ b/gcc/testsuite/gcc.target/arm/vect-early-break-cbranch.c
@@ -16,8 +16,12 @@ int b[N] = {0};
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f1 ()
@@ -37,8 +41,12 @@ void f1 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f2 ()
@@ -58,8 +66,12 @@ void f2 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f3 ()
@@ -80,8 +92,12 @@ void f3 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f4 ()
@@ -101,8 +117,12 @@ void f4 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f5 ()
@@ -122,8 +142,12 @@ void f5 ()
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vpmax.u32 d[0-9]+, d[0-9]+, d[0-9]+
** vmov r[0-9]+, s[0-9]+ @ int
+** (
** cmp r[0-9]+, #0
** bne \.L[0-9]+
+** |
+** cbnz r[0-9]+, \.L.+
+** )
** ...
*/
void f6 ()