Pushed to r14-3700.

在 2023/8/31 下午5:08, Chenghui Pan 写道:
This is an update of:
https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628303.html

Changes since last version of patch set:
- "dg-skip-if"-related Changes of the g++.dg/torture/vshuf* testcases are 
reverted.
   (Replaced by __builtin_shuffle fix)
- Add fix of __builtin_shuffle() for Loongson SX/ASX (Implemeted by adding
   vand/xvand insn in front of shuffle operation). There's no significant 
performance
   impact in current state.
- Rebased on the top of Yang Yujie's latest target configuration interface 
patch set
   (https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628772.html).

Brief history of patch set:
v1 -> v2:
- Reduce usage of "unspec" in RTL template.
- Append Support of ADDR_REG_REG in LSX and LASX.
- Constraint docs are appended in gcc/doc/md.texi and ccomment block.
- Codes related to vecarg are removed.
- Testsuite of LSX and LASX is added in v2. (Because of the size limitation of
   mail list, these patches are not shown)
- Adjust the loongarch_expand_vector_init() function to reduce instruction
output amount.
- Some minor implementation changes of RTL templates.

v2 -> v3:
- Revert vabsd/xvabsd RTL templates to unspec impl.
- Resolve warning in gcc/config/loongarch/loongarch.cc when bootstrapping
   with BOOT_CFLAGS="-O2 -ftree-vectorize -fno-vect-cost-model -mlasx".
- Remove redundant definitions in lasxintrin.h.
- Refine commit info.

v3 -> v4:
- Code simplification.
- Testsuite patches are splited from this patch set again and will be
   submitted independently in the future.

v4 -> v5:
- Regression test fix (pr54346.c)
- Combine vilvh/xvilvh insn's RTL template impl.
- Add dg-skip-if for loongarch*-*-* in vshuf test inside g++.dg/torture
   (reverted in this version)

Lulu Cheng (4):
   LoongArch: Add Loongson SX base instruction support.
   LoongArch: Add Loongson SX directive builtin function support.
   LoongArch: Add Loongson ASX base instruction support.
   LoongArch: Add Loongson ASX directive builtin function support.

  gcc/config.gcc                                |    2 +-
  gcc/config/loongarch/constraints.md           |  131 +-
  gcc/config/loongarch/genopts/loongarch.opt.in |    4 +
  gcc/config/loongarch/lasx.md                  | 5104 ++++++++++++++++
  gcc/config/loongarch/lasxintrin.h             | 5338 +++++++++++++++++
  gcc/config/loongarch/loongarch-builtins.cc    | 2686 ++++++++-
  gcc/config/loongarch/loongarch-ftypes.def     |  666 +-
  gcc/config/loongarch/loongarch-modes.def      |   39 +
  gcc/config/loongarch/loongarch-protos.h       |   35 +
  gcc/config/loongarch/loongarch.cc             | 4751 ++++++++++++++-
  gcc/config/loongarch/loongarch.h              |  117 +-
  gcc/config/loongarch/loongarch.md             |   56 +-
  gcc/config/loongarch/loongarch.opt            |    4 +
  gcc/config/loongarch/lsx.md                   | 4467 ++++++++++++++
  gcc/config/loongarch/lsxintrin.h              | 5181 ++++++++++++++++
  gcc/config/loongarch/predicates.md            |  333 +-
  gcc/doc/md.texi                               |   11 +
  17 files changed, 28645 insertions(+), 280 deletions(-)
  create mode 100644 gcc/config/loongarch/lasx.md
  create mode 100644 gcc/config/loongarch/lasxintrin.h
  create mode 100644 gcc/config/loongarch/lsx.md
  create mode 100644 gcc/config/loongarch/lsxintrin.h


Reply via email to