Skip to content

Commit

Permalink
arm: Update fp16-aapcs-[24].c after insn_propagation patch
Browse files Browse the repository at this point in the history
These tests used to generate:

        bl      swap
        ldr     r2, [sp, #4]
        mov     r0, r2  @ __fp16

but g:9d20529d94b23275885f380d155fe8671ab5353a means that we can
load directly into r0:

        bl      swap
        ldrh    r0, [sp, #4]    @ __fp16

This patch updates the tests to "defend" this change.

While there, the scans include:

mov\tr1, r[03]}

But if the spill of r2 occurs first, there's no real reason why
r2 couldn't be used as the temporary, instead r3.

The patch tries to update the scans while preserving the spirit
of the originals.

gcc/testsuite/
	* gcc.target/arm/fp16-aapcs-2.c: Expect the return value to be
	loaded directly from the stack.  Test that the swap generates
	two moves out of r0/r1 and two moves in.
	* gcc.target/arm/fp16-aapcs-4.c: Likewise.
  • Loading branch information
rsandifo-arm committed Jul 19, 2024
1 parent 2ee70c9 commit ebdad26
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
8 changes: 5 additions & 3 deletions gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ F (__fp16 a, __fp16 b, __fp16 c)
return c;
}

/* { dg-final { scan-assembler-times {mov\tr[0-9]+, r[0-2]} 3 } } */
/* { dg-final { scan-assembler-times {mov\tr1, r[03]} 1 } } */
/* { dg-final { scan-assembler-times {mov\tr0, r[0-9]+} 2 } } */
/* The swap must include two moves out of r0/r1 and two moves in. */
/* { dg-final { scan-assembler-times {mov\tr[0-9]+, r[01]} 2 } } */
/* { dg-final { scan-assembler-times {mov\tr[01], r[0-9]+} 2 } } */
/* c should be spilled around the call. */
/* { dg-final { scan-assembler {str\tr2, ([^\n]*).*ldrh\tr0, \1} { target arm_little_endian } } } */
8 changes: 5 additions & 3 deletions gcc/testsuite/gcc.target/arm/fp16-aapcs-4.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ F (__fp16 a, __fp16 b, __fp16 c)
return c;
}

/* { dg-final { scan-assembler-times {mov\tr[0-9]+, r[0-2]} 3 } } */
/* { dg-final { scan-assembler-times {mov\tr1, r[03]} 1 } } */
/* { dg-final { scan-assembler-times {mov\tr0, r[0-9]+} 2 } } */
/* The swap must include two moves out of r0/r1 and two moves in. */
/* { dg-final { scan-assembler-times {mov\tr[0-9]+, r[01]} 2 } } */
/* { dg-final { scan-assembler-times {mov\tr[01], r[0-9]+} 2 } } */
/* c should be spilled around the call. */
/* { dg-final { scan-assembler {str\tr2, ([^\n]*).*ldrh\tr0, \1} { target arm_little_endian } } } */

0 comments on commit ebdad26

Please sign in to comment.