Hello,

As a follow up of

https://gcc.gnu.org/ml/gcc-patches/2016-05/msg01240.html,

This patch set adds ARMv8.2-A FP16 scalar and vector intrinsics support,
gcc middle-end will also be aware of some standard operations that some
instructions can be auto-generated.

According to ACLE, ARMv8.2-A FP16 intrinsics for AArch64 is superset of
intrinsics for AArch32, so all those intrinsic related testcases,
particularly those under the directory advsimd-intrinsics, are also
appliable to AArch64.  This patch set has only included those testcases
that are exclusive for AArch64.

---
Jiong Wang (14)
  ARMv8.2-A FP16 data processing intrinsics
  ARMv8.2-A FP16 one operand vector intrinsics
  ARMv8.2-A FP16 two operands vector intrinsics
  ARMv8.2-A FP16 three operands vector intrinsics
  ARMv8.2-A FP16 lane vector intrinsics
  ARMv8.2-A FP16 reduction vector intrinsics
  ARMv8.2-A FP16 one operand scalar intrinsics
  ARMv8.2-A FP16 two operands scalar intrinsics
  ARMv8.2-A FP16 three operands scalar intrinsics
  ARMv8.2-A FP16 lane scalar intrinsics
  ARMv8.2-A FP16 testsuite selector
  ARMv8.2-A testsuite for new data movement intrinsics
  ARMv8.2-A testsuite for new vector intrinsics
  ARMv8.2-A testsuite for new scalar intrinsics

 gcc/config.gcc                                                          |    2 
+-
 gcc/config/aarch64/aarch64-builtins.c                                   |    5 
+
 gcc/config/aarch64/aarch64-simd-builtins.def                            |  161 
++++++++++++----
 gcc/config/aarch64/aarch64-simd.md                                      |  352 
+++++++++++----------------
 gcc/config/aarch64/aarch64.c                                            |   16 
++
 gcc/config/aarch64/aarch64.md                                           |  161 
++++++++++------
 gcc/config/aarch64/arm_fp16.h                                           |  579 
+++++++++
 gcc/config/aarch64/arm_neon.h                                           | 1380 
+++++++++++++++------
 gcc/config/aarch64/iterators.md                                         |   88 
+++++++--
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h      |   16 
+-
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_scalar_op.inc |    1 
+
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabdh_f16_1.c       |   44 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcageh_f16_1.c      |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcagth_f16_1.c      |   20 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcaleh_f16_1.c      |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcalth_f16_1.c      |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vceqh_f16_1.c       |   20 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vceqzh_f16_1.c      |   20 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgeh_f16_1.c       |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgezh_f16_1.c      |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgth_f16_1.c       |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgtzh_f16_1.c      |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcleh_f16_1.c       |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclezh_f16_1.c      |   20 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclth_f16_1.c       |   21 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcltzh_f16_1.c      |   20 
++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtah_s16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtah_s64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtah_u16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtah_u64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_f16_s16_1.c   |   25 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_f16_s64_1.c   |   25 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_f16_u16_1.c   |   25 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_f16_u64_1.c   |   25 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_f16_s16_1.c |   46 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_f16_s64_1.c |   46 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_f16_u16_1.c |   46 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_f16_u64_1.c |   46 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_s16_f16_1.c |   29 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_s64_f16_1.c |   29 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_u16_f16_1.c |   29 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_n_u64_f16_1.c |   29 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_s16_f16_1.c   |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_s64_f16_1.c   |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_u16_f16_1.c   |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvth_u64_f16_1.c   |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtmh_s16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtmh_s64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtmh_u16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtmh_u64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtnh_s16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtnh_s64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtnh_u16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtnh_u64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_s16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_s64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u16_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvtph_u64_f16_1.c  |   23 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdiv_f16_1.c        |   86 
+++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c         |  119 
+++++++++++-
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vduph_lane.c        |  137 
+++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vfmas_lane_f16_1.c  |  908 
+++++++++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vfmas_n_f16_1.c     |  469 
+++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vfmash_lane_f16_1.c |  143 
++++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmaxh_f16_1.c       |   34 
++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmaxnmv_f16_1.c     |  131 
+++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmaxv_f16_1.c       |  131 
+++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vminh_f16_1.c       |   34 
++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vminnmv_f16_1.c     |  131 
+++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vminv_f16_1.c       |  131 
+++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_lane_f16_1.c   |  454 
++++++++++++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulh_lane_f16_1.c  |   90 
+++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulx_f16_1.c       |   84 
++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulx_lane_f16_1.c  |  452 
+++++++++++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulx_n_f16_1.c     |  177 
+++++++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulxh_f16_1.c      |   50 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmulxh_lane_f16_1.c |   91 
+++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vpminmaxnm_f16_1.c  |  114 
+++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpeh_f16_1.c     |   42 
++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpsh_f16_1.c     |   50 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpxh_f16_1.c     |   32 
++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrndi_f16_1.c       |   71 
+++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsqrteh_f16_1.c    |   30 
+++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsqrtsh_f16_1.c    |   50 
+++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsqrt_f16_1.c       |   72 
+++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtrn_half.c         |  263 
+++++++++++++++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c         |  259 
+++++++++++++++++++++++++
 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip_half.c         |  263 
+++++++++++++++++++++++++
 gcc/testsuite/lib/target-supports.exp                                   |   50 
+++--
 89 files changed, 8743 insertions(+), 359 deletions(-)

Reply via email to