[AArch64] Tweak iterator usage for [SU]Q{ADD,SUB}

Programming / Compilers / GCC - rsandifo [138bc75d-0d04-0410-961f-82ee72b054a4] - 9 January 2020 15:15 UTC

The pattern:

;; q

(define_insn "aarch64_" [(set (match_operand:VSDQ_I 0 "register_operand" "=w") (BINQOPS:VSDQ_I (match_operand:VSDQ_I 1 "register_operand" "w") (match_operand:VSDQ_I 2 "register_operand" "w")))] "TARGET_SIMD" "\\t%0, %1, %2" [(set_attr "type" "neon_")] )

meant that we overloaded "optab" to be "qadd" for both SQADD and UQADD. Most other "optab" entries are instead the full optab name, which for these patterns would be "ssadd" and "usadd" respectively. (Unfortunately, the optabs don't extend to vectors yet, something that would be good to fix in GCC 11.)

This patch therefore does what the comment implies and uses q to distinguish qadd and qsub instead.

2020-01-09 Richard Sandiford

gcc/
- config/aarch64/iterators.md (addsub): New code attribute.
- config/aarch64/aarch64-simd.md (aarch64_): Re-express as... (aarch64_q): ...this, making the same change in the asm string and attributes. Fix indentation.
- config/aarch64/aarch64-sve.md (@aarch64_): Re-express as... (@aarch64_sve_): ...this.
- config/aarch64/aarch64-sve-builtins.h (function_expander::expand_signed_unpred_op): Delete.
- config/aarch64/aarch64-sve-builtins.cc (function_expander::expand_signed_unpred_op): Likewise. (function_expander::map_to_rtx_codes): If the optab isn't defined, try using code_for_aarch64_sve instead.
- config/aarch64/aarch64-sve-builtins-base.cc (svqadd_impl): Delete. (svqsub_impl): Likewise. (svqadd, svqsub): Use rtx_code_function instead.

cf0a5e3c3fa [AArch64] Tweak iterator usage for [SU]Q{ADD,SUB}
gcc/ChangeLog | 20 ++++++++++++++++
gcc/config/aarch64/aarch64-simd.md | 8 +++----
gcc/config/aarch64/aarch64-sve-builtins-base.cc | 24 ++-----------------
gcc/config/aarch64/aarch64-sve-builtins.cc | 31 +++++++++++--------------
gcc/config/aarch64/aarch64-sve-builtins.h | 1 -
gcc/config/aarch64/aarch64-sve.md | 4 ++--
gcc/config/aarch64/iterators.md | 13 +++++++----
7 files changed, 50 insertions(+), 51 deletions(-)

Upstream: gcc.gnu.org


  • Share