[v2,0/6] Implement asm flag outputs for arm + aarch64

Message ID 20191114100716.28827-1-richard.henderson@linaro.org
Headers show
Series
  • Implement asm flag outputs for arm + aarch64
Related show

Message

Richard Henderson Nov. 14, 2019, 10:07 a.m.
I've put the implementation into config/arm/aarch-common.c, so
that it can be shared between the two targets.  This required
a little bit of cleanup to the CC modes and constraints to get
the two targets to match up.

Changes for v2:
  * Document overflow flags.
  * Add "hs" and "lo" as aliases of "cs" and "cc".
  * Add unsigned cmp tests to asm-flag-6.c.

Richard Sandiford has given his ack for the aarch64 side.
I'm still looking for an ack for the arm side.


r~


Richard Henderson (6):
  aarch64: Add "c" constraint
  arm: Fix the "c" constraint
  arm: Rename CC_NOOVmode to CC_NZmode
  arm, aarch64: Add support for __GCC_ASM_FLAG_OUTPUTS__
  arm: Add testsuite checks for asm-flag
  aarch64: Add testsuite checks for asm-flag

 gcc/config/arm/aarch-common-protos.h          |   6 +
 gcc/config/aarch64/aarch64-c.c                |   2 +
 gcc/config/aarch64/aarch64.c                  |   3 +
 gcc/config/arm/aarch-common.c                 | 136 +++++++++++++
 gcc/config/arm/arm-c.c                        |   1 +
 gcc/config/arm/arm.c                          |  15 +-
 gcc/testsuite/gcc.target/aarch64/asm-flag-1.c |  35 ++++
 gcc/testsuite/gcc.target/aarch64/asm-flag-3.c |  38 ++++
 gcc/testsuite/gcc.target/aarch64/asm-flag-5.c |  30 +++
 gcc/testsuite/gcc.target/aarch64/asm-flag-6.c |  62 ++++++
 gcc/testsuite/gcc.target/arm/asm-flag-1.c     |  36 ++++
 gcc/testsuite/gcc.target/arm/asm-flag-3.c     |  38 ++++
 gcc/testsuite/gcc.target/arm/asm-flag-5.c     |  30 +++
 gcc/testsuite/gcc.target/arm/asm-flag-6.c     |  62 ++++++
 gcc/config/aarch64/constraints.md             |   4 +
 gcc/config/arm/arm-modes.def                  |   4 +-
 gcc/config/arm/arm.md                         | 186 +++++++++---------
 gcc/config/arm/constraints.md                 |   5 +-
 gcc/config/arm/predicates.md                  |   2 +-
 gcc/config/arm/thumb1.md                      |   8 +-
 gcc/config/arm/thumb2.md                      |  34 ++--
 gcc/doc/extend.texi                           |  39 ++++
 22 files changed, 651 insertions(+), 125 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-5.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-6.c
 create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-1.c
 create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-3.c
 create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-5.c
 create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-6.c

-- 
2.17.1

Comments

Kyrill Tkachov Nov. 14, 2019, 1:08 p.m. | #1
Hi Richard,

On 11/14/19 10:07 AM, Richard Henderson wrote:
> I've put the implementation into config/arm/aarch-common.c, so

> that it can be shared between the two targets.  This required

> a little bit of cleanup to the CC modes and constraints to get

> the two targets to match up.

>

> Changes for v2:

>   * Document overflow flags.

>   * Add "hs" and "lo" as aliases of "cs" and "cc".

>   * Add unsigned cmp tests to asm-flag-6.c.

>

> Richard Sandiford has given his ack for the aarch64 side.

> I'm still looking for an ack for the arm side.

>

The arm parts look good to me, there's not too much arm-specific stuff 
that's not shared with aarch64 thankfully.

Thanks,

Kyrill


>

> r~

>

>

> Richard Henderson (6):

>   aarch64: Add "c" constraint

>   arm: Fix the "c" constraint

>   arm: Rename CC_NOOVmode to CC_NZmode

>   arm, aarch64: Add support for __GCC_ASM_FLAG_OUTPUTS__

>   arm: Add testsuite checks for asm-flag

>   aarch64: Add testsuite checks for asm-flag

>

>  gcc/config/arm/aarch-common-protos.h          |   6 +

>  gcc/config/aarch64/aarch64-c.c                |   2 +

>  gcc/config/aarch64/aarch64.c                  |   3 +

>  gcc/config/arm/aarch-common.c                 | 136 +++++++++++++

>  gcc/config/arm/arm-c.c                        |   1 +

>  gcc/config/arm/arm.c                          |  15 +-

>  gcc/testsuite/gcc.target/aarch64/asm-flag-1.c |  35 ++++

>  gcc/testsuite/gcc.target/aarch64/asm-flag-3.c |  38 ++++

>  gcc/testsuite/gcc.target/aarch64/asm-flag-5.c |  30 +++

>  gcc/testsuite/gcc.target/aarch64/asm-flag-6.c |  62 ++++++

>  gcc/testsuite/gcc.target/arm/asm-flag-1.c     |  36 ++++

>  gcc/testsuite/gcc.target/arm/asm-flag-3.c     |  38 ++++

>  gcc/testsuite/gcc.target/arm/asm-flag-5.c     |  30 +++

>  gcc/testsuite/gcc.target/arm/asm-flag-6.c     |  62 ++++++

>  gcc/config/aarch64/constraints.md             |   4 +

>  gcc/config/arm/arm-modes.def                  |   4 +-

>  gcc/config/arm/arm.md                         | 186 +++++++++---------

>  gcc/config/arm/constraints.md                 |   5 +-

>  gcc/config/arm/predicates.md                  |   2 +-

>  gcc/config/arm/thumb1.md                      |   8 +-

>  gcc/config/arm/thumb2.md                      |  34 ++--

>  gcc/doc/extend.texi                           |  39 ++++

>  22 files changed, 651 insertions(+), 125 deletions(-)

>  create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-1.c

>  create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-3.c

>  create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-5.c

>  create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-flag-6.c

>  create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-1.c

>  create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-3.c

>  create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-5.c

>  create mode 100644 gcc/testsuite/gcc.target/arm/asm-flag-6.c

>

> -- 

> 2.17.1

>
Richard Henderson Nov. 14, 2019, 1:46 p.m. | #2
On 11/14/19 2:08 PM, Kyrill Tkachov wrote:
> Hi Richard,

> 

> On 11/14/19 10:07 AM, Richard Henderson wrote:

>> I've put the implementation into config/arm/aarch-common.c, so

>> that it can be shared between the two targets.  This required

>> a little bit of cleanup to the CC modes and constraints to get

>> the two targets to match up.

>>

>> Changes for v2:

>>   * Document overflow flags.

>>   * Add "hs" and "lo" as aliases of "cs" and "cc".

>>   * Add unsigned cmp tests to asm-flag-6.c.

>>

>> Richard Sandiford has given his ack for the aarch64 side.

>> I'm still looking for an ack for the arm side.

>>

> The arm parts look good to me, there's not too much arm-specific stuff that's

> not shared with aarch64 thankfully.


Yes indeed.

Committed series ending in r278228.

Thanks,

r~