On 08/07/2025 16:14, Torbjörn SVENSSON wrote:
Ok for trunk and releases/gcc-15?

--

The scheduler allows the `and` instruction to be placed at 3 different
locations. Update the function body to contain all 3 locations.
Also, armv8.1-m.main can use `ldr` instead of `pop` to return.

gcc/testsuite/ChangeLog:

        * gcc.target/arm/unsigned-extend-2.c: Add missing potential
        locations for `and` instruction and adjust return instruction.

Scheduler behaviour isn't what's being tested here, so I think we should just disable sched1 and sched2.

R.


Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com>
---
  gcc/testsuite/gcc.target/arm/unsigned-extend-2.c | 14 +++++++++++---
  1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c 
b/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
index d9f95a14277..e46573cf39d 100644
--- a/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
+++ b/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
@@ -7,15 +7,19 @@
  ** foo:
  **    movs    (r[0-9]+), #8
  ** (
+** (
+**     and     r0, r1, r0, lsr #1
  **    subs    \1, \1, #1
  **    ands    \1, \1, #255
-**     and     r0, r1, r0, lsr #1
-**     bne     .L[0-9]+
-**     bx      lr
  ** |
  **    subs    \1, \1, #1
  **    and     r0, r1, r0, lsr #1
  **    ands    \1, \1, #255
+** |
+**     subs    \1, \1, #1
+**     ands    \1, \1, #255
+**     and     r0, r1, r0, lsr #1
+** )
  **    bne     .L[0-9]+
  **    bx      lr
  ** |
@@ -23,7 +27,11 @@
  **    dls     lr, \1
  **    and     r0, r1, r0, lsr #1
  **    le      lr, .L[0-9]+
+** (
  **    pop     {pc}
+** |
+**     ldr     pc, \[sp\], #4
+** )
  ** )
  */

Reply via email to