This patch set is a further step to remove those intrinsics implemented
by inline assembly.

The touched intrinsics including those for fixed-point coversion,
frsqrt*, fabd and faddp.

The implementation approach is quite simple, for these intrinsics that
were implemented by inline assembly:

  * If there are rtl instruction patterns introduced later, then migrate
    to builtins which are backed by these patterns.

  * If there aren't rtl instruction patterns, then add missing patterns,
    and migrate to builtins.

AArch64 boostrap OK, no regression on linux configuration, also no
regression on big-endian bare-metal tests.

---
Jiong Wang (6)
  Reimplement scalar fixed-point intrinsics
  Reimplement vector fixed-point intrinsics
  Reimplement frsqrte intrinsics
  Reimplement frsqrts intrinsics
  Reimplement fabd intrinsics & merge rtl patterns
  Reimplement vpadd intrinsics & extends rtl patterns to all modes

 gcc/config/aarch64/aarch64-builtins.c        |  12 ++-
gcc/config/aarch64/aarch64-builtins.def | 473 ++++++++++++++++++++++++++ gcc/config/aarch64/aarch64-simd-builtins.def | 447 -------------------------
 gcc/config/aarch64/aarch64-simd.md           |  72 ++++++++++-------
 gcc/config/aarch64/aarch64.c                 |  20 ++---
 gcc/config/aarch64/aarch64.md                |  26 ++++++
 gcc/config/aarch64/arm_neon.h                | 700 +++++++++++------
 gcc/config/aarch64/iterators.md              |  31 ++++++-
 gcc/config/aarch64/t-aarch64                 |   2 +-
 9 files changed, 842 insertions(+), 941 deletions(-)

Reply via email to