public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: xiezhiheng <xiezhiheng@huawei.com>
To: Richard Sandiford <richard.sandiford@arm.com>
Cc: Richard Biener <richard.guenther@gmail.com>,
	"gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>
Subject: RE: [PATCH PR94442] [AArch64] Redundant ldp/stp instructions emitted at -O3
Date: Tue, 25 Aug 2020 03:14:16 +0000	[thread overview]
Message-ID: <0ce8ec84dff744aeb3967cf8416e541d@huawei.com> (raw)
In-Reply-To: <mpt8se8e5i4.fsf@arm.com>

[-- Attachment #1: Type: text/plain, Size: 2612 bytes --]

> -----Original Message-----
> From: Richard Sandiford [mailto:richard.sandiford@arm.com]
> Sent: Friday, August 21, 2020 5:02 PM
> To: xiezhiheng <xiezhiheng@huawei.com>
> Cc: Richard Biener <richard.guenther@gmail.com>; gcc-patches@gcc.gnu.org
> Subject: Re: [PATCH PR94442] [AArch64] Redundant ldp/stp instructions
> emitted at -O3

Cut...
 
> Looks like the saturating intrinsics might need a bit more thought.
> Would you mind submitting the patch with just the other parts?
> Those were uncontroversial and it would be a shame to hold them
> up over this.

Okay, I reorganized the existing patch and finished the first half of the intrinsics
except saturating intrinsics and load intrinsics.

Bootstrapped and tested on aarch64 Linux platform.

For load intrinsics, I have one problem when I set FLAG_READ_MEMORY for them,
some test cases like
gcc.target/aarch64/advsimd-intrinsics/vld2_lane_p8_indices_1.c
  #include <arm_neon.h>

  /* { dg-do compile } */
  /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */

  poly8x8x2_t
  f_vld2_lane_p8 (poly8_t * p, poly8x8x2_t v)
  {
    poly8x8x2_t res;
    /* { dg-error "lane 8 out of range 0 - 7" "" { target *-*-* } 0 } */
    res = vld2_lane_p8 (p, v, 8);
    /* { dg-error "lane -1 out of range 0 - 7" "" { target *-*-* } 0 } */
    res = vld2_lane_p8 (p, v, -1);
    return res;
  }
would fail in regression.  Because the first statement
  res = vld2_lane_p8 (p, v, 8);
would be eliminated as dead code in gimple phase but the error message is
generated in expand pass.  So I am going to replace the second statement
  res = vld2_lane_p8 (p, v, -1);
with
  res = vld2_lane_p8 (p, res, -1);
or do you have any other suggestions?

And for test case gcc.target/aarch64/arg-type-diagnostics-1.c, I return the result
to prevent the statement
  result = vrsra_n_s32 (arg1, arg2, a);
from being eliminated by treated as dead code.

Thanks,
Xie Zhiheng


diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7a71b4367d4..217344d7d1f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2020-08-25  Zhiheng Xie  <xiezhiheng@huawei.com>
+
+	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAGS
+	for intrinsic functions.
+

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b9562e67883..e10bcc9b28a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-08-25  Zhiheng Xie  <xiezhiheng@huawei.com>
+
+	* gcc.target/aarch64/arg-type-diagnostics-1.c: Return result
+	to prevent statement from being eliminated.
+

[-- Attachment #2: pr94442-v1.patch --]
[-- Type: application/octet-stream, Size: 28927 bytes --]

From 7769142a0855d38510869262a9e413dc48766086 Mon Sep 17 00:00:00 2001
From: xiezhiheng <xiezhiheng@huawei.com>
Date: Mon, 24 Aug 2020 21:35:51 -0400
Subject: [PATCH] AArch64: Add FLAGS for intrinsic functions [PR94442]

2020-08-25  Zhiheng Xie  <xiezhiheng@huawei.com>

gcc/ChangeLog:

	* config/aarch64/aarch64-simd-builtins.def: Add proper FLAGS
	for intrinsic functions.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/arg-type-diagnostics-1.c: Return result
	to prevent statement from being eliminated.
---
 gcc/config/aarch64/aarch64-simd-builtins.def  | 560 +++++++++---------
 .../aarch64/arg-type-diagnostics-1.c          |   3 +-
 2 files changed, 284 insertions(+), 279 deletions(-)

diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def
index e8650121cd6..c37c6d561ba 100644
--- a/gcc/config/aarch64/aarch64-simd-builtins.def
+++ b/gcc/config/aarch64/aarch64-simd-builtins.def
@@ -37,19 +37,23 @@
    macro holding the RTL pattern for the intrinsic.  This mapping is:
    0 - CODE_FOR_aarch64_<name><mode>
    1-9 - CODE_FOR_<name><mode><1-9>
-   10 - CODE_FOR_<name><mode>.  */
-
-  BUILTIN_VDC (COMBINE, combine, 0, ALL)
-  VAR1 (COMBINEP, combine, 0, ALL, di)
-  BUILTIN_VB (BINOP, pmul, 0, ALL)
-  BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0, ALL)
-  BUILTIN_VHSDF_DF (UNOP, sqrt, 2, ALL)
-  BUILTIN_VD_BHSI (BINOP, addp, 0, ALL)
-  VAR1 (UNOP, addp, 0, ALL, di)
-  BUILTIN_VDQ_BHSI (UNOP, clrsb, 2, ALL)
-  BUILTIN_VDQ_BHSI (UNOP, clz, 2, ALL)
-  BUILTIN_VS (UNOP, ctz, 2, ALL)
-  BUILTIN_VB (UNOP, popcount, 2, ALL)
+   10 - CODE_FOR_<name><mode>.
+
+   Parameter 4 is the 'flag' of the intrinsic.  This is used to
+   help describe the attributes (for example, pure) for the intrinsic
+   function.  */
+
+  BUILTIN_VDC (COMBINE, combine, 0, AUTO_FP)
+  VAR1 (COMBINEP, combine, 0, AUTO_FP, di)
+  BUILTIN_VB (BINOP, pmul, 0, NONE)
+  BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0, FP)
+  BUILTIN_VHSDF_DF (UNOP, sqrt, 2, NONE)
+  BUILTIN_VD_BHSI (BINOP, addp, 0, NONE)
+  VAR1 (UNOP, addp, 0, NONE, di)
+  BUILTIN_VDQ_BHSI (UNOP, clrsb, 2, NONE)
+  BUILTIN_VDQ_BHSI (UNOP, clz, 2, NONE)
+  BUILTIN_VS (UNOP, ctz, 2, NONE)
+  BUILTIN_VB (UNOP, popcount, 2, NONE)
 
   /* Implemented by aarch64_<sur>q<r>shl<mode>.  */
   BUILTIN_VSDQ_I (BINOP, sqshl, 0, ALL)
@@ -66,94 +70,94 @@
   BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0, ALL)
 
   /* Implemented by aarch64_get_dreg<VSTRUCT:mode><VDC:mode>.  */
-  BUILTIN_VDC (GETREG, get_dregoi, 0, ALL)
-  BUILTIN_VDC (GETREG, get_dregci, 0, ALL)
-  BUILTIN_VDC (GETREG, get_dregxi, 0, ALL)
-  VAR1 (GETREGP, get_dregoi, 0, ALL, di)
-  VAR1 (GETREGP, get_dregci, 0, ALL, di)
-  VAR1 (GETREGP, get_dregxi, 0, ALL, di)
+  BUILTIN_VDC (GETREG, get_dregoi, 0, AUTO_FP)
+  BUILTIN_VDC (GETREG, get_dregci, 0, AUTO_FP)
+  BUILTIN_VDC (GETREG, get_dregxi, 0, AUTO_FP)
+  VAR1 (GETREGP, get_dregoi, 0, AUTO_FP, di)
+  VAR1 (GETREGP, get_dregci, 0, AUTO_FP, di)
+  VAR1 (GETREGP, get_dregxi, 0, AUTO_FP, di)
   /* Implemented by aarch64_get_qreg<VSTRUCT:mode><VQ:mode>.  */
-  BUILTIN_VQ (GETREG, get_qregoi, 0, ALL)
-  BUILTIN_VQ (GETREG, get_qregci, 0, ALL)
-  BUILTIN_VQ (GETREG, get_qregxi, 0, ALL)
-  VAR1 (GETREGP, get_qregoi, 0, ALL, v2di)
-  VAR1 (GETREGP, get_qregci, 0, ALL, v2di)
-  VAR1 (GETREGP, get_qregxi, 0, ALL, v2di)
+  BUILTIN_VQ (GETREG, get_qregoi, 0, AUTO_FP)
+  BUILTIN_VQ (GETREG, get_qregci, 0, AUTO_FP)
+  BUILTIN_VQ (GETREG, get_qregxi, 0, AUTO_FP)
+  VAR1 (GETREGP, get_qregoi, 0, AUTO_FP, v2di)
+  VAR1 (GETREGP, get_qregci, 0, AUTO_FP, v2di)
+  VAR1 (GETREGP, get_qregxi, 0, AUTO_FP, v2di)
   /* Implemented by aarch64_set_qreg<VSTRUCT:mode><VQ:mode>.  */
-  BUILTIN_VQ (SETREG, set_qregoi, 0, ALL)
-  BUILTIN_VQ (SETREG, set_qregci, 0, ALL)
-  BUILTIN_VQ (SETREG, set_qregxi, 0, ALL)
-  VAR1 (SETREGP, set_qregoi, 0, ALL, v2di)
-  VAR1 (SETREGP, set_qregci, 0, ALL, v2di)
-  VAR1 (SETREGP, set_qregxi, 0, ALL, v2di)
+  BUILTIN_VQ (SETREG, set_qregoi, 0, AUTO_FP)
+  BUILTIN_VQ (SETREG, set_qregci, 0, AUTO_FP)
+  BUILTIN_VQ (SETREG, set_qregxi, 0, AUTO_FP)
+  VAR1 (SETREGP, set_qregoi, 0, AUTO_FP, v2di)
+  VAR1 (SETREGP, set_qregci, 0, AUTO_FP, v2di)
+  VAR1 (SETREGP, set_qregxi, 0, AUTO_FP, v2di)
   /* Implemented by aarch64_ld1x2<VQ:mode>. */
-  BUILTIN_VQ (LOADSTRUCT, ld1x2, 0, ALL)
+  BUILTIN_VQ (LOADSTRUCT, ld1x2, 0, READ_MEMORY)
   /* Implemented by aarch64_ld1x2<VDC:mode>. */
-  BUILTIN_VDC (LOADSTRUCT, ld1x2, 0, ALL)
+  BUILTIN_VDC (LOADSTRUCT, ld1x2, 0, READ_MEMORY)
   /* Implemented by aarch64_ld<VSTRUCT:nregs><VDC:mode>.  */
-  BUILTIN_VDC (LOADSTRUCT, ld2, 0, ALL)
-  BUILTIN_VDC (LOADSTRUCT, ld3, 0, ALL)
-  BUILTIN_VDC (LOADSTRUCT, ld4, 0, ALL)
+  BUILTIN_VDC (LOADSTRUCT, ld2, 0, READ_MEMORY)
+  BUILTIN_VDC (LOADSTRUCT, ld3, 0, READ_MEMORY)
+  BUILTIN_VDC (LOADSTRUCT, ld4, 0, READ_MEMORY)
   /* Implemented by aarch64_ld<VSTRUCT:nregs><VQ:mode>.  */
-  BUILTIN_VQ (LOADSTRUCT, ld2, 0, ALL)
-  BUILTIN_VQ (LOADSTRUCT, ld3, 0, ALL)
-  BUILTIN_VQ (LOADSTRUCT, ld4, 0, ALL)
+  BUILTIN_VQ (LOADSTRUCT, ld2, 0, READ_MEMORY)
+  BUILTIN_VQ (LOADSTRUCT, ld3, 0, READ_MEMORY)
+  BUILTIN_VQ (LOADSTRUCT, ld4, 0, READ_MEMORY)
   /* Implemented by aarch64_ld<VSTRUCT:nregs>r<VALLDIF:mode>.  */
-  BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0, ALL)
-  BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0, ALL)
-  BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0, ALL)
+  BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0, READ_MEMORY)
+  BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0, READ_MEMORY)
+  BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0, READ_MEMORY)
   /* Implemented by aarch64_ld<VSTRUCT:nregs>_lane<VQ:mode>.  */
-  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0, ALL)
-  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0, ALL)
-  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0, ALL)
+  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0, READ_MEMORY)
+  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0, READ_MEMORY)
+  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0, READ_MEMORY)
   /* Implemented by aarch64_st<VSTRUCT:nregs><VDC:mode>.  */
-  BUILTIN_VDC (STORESTRUCT, st2, 0, ALL)
-  BUILTIN_VDC (STORESTRUCT, st3, 0, ALL)
-  BUILTIN_VDC (STORESTRUCT, st4, 0, ALL)
+  BUILTIN_VDC (STORESTRUCT, st2, 0, WRITE_MEMORY)
+  BUILTIN_VDC (STORESTRUCT, st3, 0, WRITE_MEMORY)
+  BUILTIN_VDC (STORESTRUCT, st4, 0, WRITE_MEMORY)
   /* Implemented by aarch64_st<VSTRUCT:nregs><VQ:mode>.  */
-  BUILTIN_VQ (STORESTRUCT, st2, 0, ALL)
-  BUILTIN_VQ (STORESTRUCT, st3, 0, ALL)
-  BUILTIN_VQ (STORESTRUCT, st4, 0, ALL)
-
-  BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0, ALL)
-  BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0, ALL)
-  BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0, ALL)
-
-  BUILTIN_VQW (BINOP, saddl2, 0, ALL)
-  BUILTIN_VQW (BINOP, uaddl2, 0, ALL)
-  BUILTIN_VQW (BINOP, ssubl2, 0, ALL)
-  BUILTIN_VQW (BINOP, usubl2, 0, ALL)
-  BUILTIN_VQW (BINOP, saddw2, 0, ALL)
-  BUILTIN_VQW (BINOP, uaddw2, 0, ALL)
-  BUILTIN_VQW (BINOP, ssubw2, 0, ALL)
-  BUILTIN_VQW (BINOP, usubw2, 0, ALL)
+  BUILTIN_VQ (STORESTRUCT, st2, 0, WRITE_MEMORY)
+  BUILTIN_VQ (STORESTRUCT, st3, 0, WRITE_MEMORY)
+  BUILTIN_VQ (STORESTRUCT, st4, 0, WRITE_MEMORY)
+
+  BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0, WRITE_MEMORY)
+  BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0, WRITE_MEMORY)
+  BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0, WRITE_MEMORY)
+
+  BUILTIN_VQW (BINOP, saddl2, 0, NONE)
+  BUILTIN_VQW (BINOP, uaddl2, 0, NONE)
+  BUILTIN_VQW (BINOP, ssubl2, 0, NONE)
+  BUILTIN_VQW (BINOP, usubl2, 0, NONE)
+  BUILTIN_VQW (BINOP, saddw2, 0, NONE)
+  BUILTIN_VQW (BINOP, uaddw2, 0, NONE)
+  BUILTIN_VQW (BINOP, ssubw2, 0, NONE)
+  BUILTIN_VQW (BINOP, usubw2, 0, NONE)
   /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>.  */
-  BUILTIN_VD_BHSI (BINOP, saddl, 0, ALL)
-  BUILTIN_VD_BHSI (BINOP, uaddl, 0, ALL)
-  BUILTIN_VD_BHSI (BINOP, ssubl, 0, ALL)
-  BUILTIN_VD_BHSI (BINOP, usubl, 0, ALL)
+  BUILTIN_VD_BHSI (BINOP, saddl, 0, NONE)
+  BUILTIN_VD_BHSI (BINOP, uaddl, 0, NONE)
+  BUILTIN_VD_BHSI (BINOP, ssubl, 0, NONE)
+  BUILTIN_VD_BHSI (BINOP, usubl, 0, NONE)
   /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>.  */
-  BUILTIN_VD_BHSI (BINOP, saddw, 0, ALL)
-  BUILTIN_VD_BHSI (BINOP, uaddw, 0, ALL)
-  BUILTIN_VD_BHSI (BINOP, ssubw, 0, ALL)
-  BUILTIN_VD_BHSI (BINOP, usubw, 0, ALL)
+  BUILTIN_VD_BHSI (BINOP, saddw, 0, NONE)
+  BUILTIN_VD_BHSI (BINOP, uaddw, 0, NONE)
+  BUILTIN_VD_BHSI (BINOP, ssubw, 0, NONE)
+  BUILTIN_VD_BHSI (BINOP, usubw, 0, NONE)
   /* Implemented by aarch64_<sur>h<addsub><mode>.  */
-  BUILTIN_VDQ_BHSI (BINOP, shadd, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, shsub, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, uhadd, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, uhsub, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, srhadd, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, urhadd, 0, ALL)
+  BUILTIN_VDQ_BHSI (BINOP, shadd, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, shsub, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, uhadd, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, uhsub, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, srhadd, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, urhadd, 0, NONE)
   /* Implemented by aarch64_<sur><addsub>hn<mode>.  */
-  BUILTIN_VQN (BINOP, addhn, 0, ALL)
-  BUILTIN_VQN (BINOP, subhn, 0, ALL)
-  BUILTIN_VQN (BINOP, raddhn, 0, ALL)
-  BUILTIN_VQN (BINOP, rsubhn, 0, ALL)
+  BUILTIN_VQN (BINOP, addhn, 0, NONE)
+  BUILTIN_VQN (BINOP, subhn, 0, NONE)
+  BUILTIN_VQN (BINOP, raddhn, 0, NONE)
+  BUILTIN_VQN (BINOP, rsubhn, 0, NONE)
   /* Implemented by aarch64_<sur><addsub>hn2<mode>.  */
-  BUILTIN_VQN (TERNOP, addhn2, 0, ALL)
-  BUILTIN_VQN (TERNOP, subhn2, 0, ALL)
-  BUILTIN_VQN (TERNOP, raddhn2, 0, ALL)
-  BUILTIN_VQN (TERNOP, rsubhn2, 0, ALL)
+  BUILTIN_VQN (TERNOP, addhn2, 0, NONE)
+  BUILTIN_VQN (TERNOP, subhn2, 0, NONE)
+  BUILTIN_VQN (TERNOP, raddhn2, 0, NONE)
+  BUILTIN_VQN (TERNOP, rsubhn2, 0, NONE)
 
   BUILTIN_VSQN_HSDI (UNOP, sqmovun, 0, ALL)
   /* Implemented by aarch64_<sur>qmovn<mode>.  */
@@ -185,20 +189,20 @@
   BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0, ALL)
   BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0, ALL)
 
-  BUILTIN_VD_BHSI (BINOP, intrinsic_vec_smult_lo_, 0, ALL)
-  BUILTIN_VD_BHSI (BINOPU, intrinsic_vec_umult_lo_, 0, ALL)
+  BUILTIN_VD_BHSI (BINOP, intrinsic_vec_smult_lo_, 0, NONE)
+  BUILTIN_VD_BHSI (BINOPU, intrinsic_vec_umult_lo_, 0, NONE)
 
-  BUILTIN_VQW (BINOP, vec_widen_smult_hi_, 10, ALL)
-  BUILTIN_VQW (BINOPU, vec_widen_umult_hi_, 10, ALL)
+  BUILTIN_VQW (BINOP, vec_widen_smult_hi_, 10, NONE)
+  BUILTIN_VQW (BINOPU, vec_widen_umult_hi_, 10, NONE)
 
-  BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_lane_, 0, ALL)
-  BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_lane_, 0, ALL)
-  BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_laneq_, 0, ALL)
-  BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_laneq_, 0, ALL)
-  BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_lane_, 0, ALL)
-  BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_lane_, 0, ALL)
-  BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_laneq_, 0, ALL)
-  BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_laneq_, 0, ALL)
+  BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_lane_, 0, NONE)
+  BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_lane_, 0, NONE)
+  BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_laneq_, 0, NONE)
+  BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_laneq_, 0, NONE)
+  BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_lane_, 0, NONE)
+  BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_lane_, 0, NONE)
+  BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_laneq_, 0, NONE)
+  BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_laneq_, 0, NONE)
 
   BUILTIN_VSD_HSI (BINOP, sqdmull, 0, ALL)
   BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_lane, 0, ALL)
@@ -217,63 +221,63 @@
   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_lane, 0, ALL)
   BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_laneq, 0, ALL)
 
-  BUILTIN_VSDQ_I_DI (BINOP, ashl, 3, ALL)
+  BUILTIN_VSDQ_I_DI (BINOP, ashl, 3, NONE)
   /* Implemented by aarch64_<sur>shl<mode>.  */
-  BUILTIN_VSDQ_I_DI (BINOP, sshl, 0, ALL)
-  BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0, ALL)
-  BUILTIN_VSDQ_I_DI (BINOP, srshl, 0, ALL)
-  BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0, ALL)
+  BUILTIN_VSDQ_I_DI (BINOP, sshl, 0, NONE)
+  BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0, NONE)
+  BUILTIN_VSDQ_I_DI (BINOP, srshl, 0, NONE)
+  BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0, NONE)
 
   /* Implemented by aarch64_<sur><dotprod>{_lane}{q}<dot_mode>.  */
-  BUILTIN_VB (TERNOP, sdot, 0, ALL)
-  BUILTIN_VB (TERNOPU, udot, 0, ALL)
-  BUILTIN_VB (TERNOP_SSUS, usdot, 0, ALL)
-  BUILTIN_VB (QUADOP_LANE, sdot_lane, 0, ALL)
-  BUILTIN_VB (QUADOPU_LANE, udot_lane, 0, ALL)
-  BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0, ALL)
-  BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0, ALL)
-  BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_lane, 0, ALL)
-  BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_laneq, 0, ALL)
-  BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_lane, 0, ALL)
-  BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_laneq, 0, ALL)
+  BUILTIN_VB (TERNOP, sdot, 0, NONE)
+  BUILTIN_VB (TERNOPU, udot, 0, NONE)
+  BUILTIN_VB (TERNOP_SSUS, usdot, 0, NONE)
+  BUILTIN_VB (QUADOP_LANE, sdot_lane, 0, NONE)
+  BUILTIN_VB (QUADOPU_LANE, udot_lane, 0, NONE)
+  BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0, NONE)
+  BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0, NONE)
+  BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_lane, 0, NONE)
+  BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_laneq, 0, NONE)
+  BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_lane, 0, NONE)
+  BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_laneq, 0, NONE)
 
   /* Implemented by aarch64_fcadd<rot><mode>.   */
-  BUILTIN_VHSDF (BINOP, fcadd90, 0, ALL)
-  BUILTIN_VHSDF (BINOP, fcadd270, 0, ALL)
+  BUILTIN_VHSDF (BINOP, fcadd90, 0, FP)
+  BUILTIN_VHSDF (BINOP, fcadd270, 0, FP)
 
   /* Implemented by aarch64_fcmla{_lane}{q}<rot><mode>.   */
-  BUILTIN_VHSDF (TERNOP, fcmla0, 0, ALL)
-  BUILTIN_VHSDF (TERNOP, fcmla90, 0, ALL)
-  BUILTIN_VHSDF (TERNOP, fcmla180, 0, ALL)
-  BUILTIN_VHSDF (TERNOP, fcmla270, 0, ALL)
-  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0, ALL)
-  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0, ALL)
-  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0, ALL)
-  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0, ALL)
-
-  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0, ALL)
-  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0, ALL)
-  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0, ALL)
-  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0, ALL)
-
-  BUILTIN_VDQ_I (SHIFTIMM, ashr, 3, ALL)
-  VAR1 (SHIFTIMM, ashr_simd, 0, ALL, di)
-  BUILTIN_VDQ_I (SHIFTIMM, lshr, 3, ALL)
-  VAR1 (USHIFTIMM, lshr_simd, 0, ALL, di)
+  BUILTIN_VHSDF (TERNOP, fcmla0, 0, FP)
+  BUILTIN_VHSDF (TERNOP, fcmla90, 0, FP)
+  BUILTIN_VHSDF (TERNOP, fcmla180, 0, FP)
+  BUILTIN_VHSDF (TERNOP, fcmla270, 0, FP)
+  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0, FP)
+  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0, FP)
+  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0, FP)
+  BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0, FP)
+
+  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0, FP)
+  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0, FP)
+  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0, FP)
+  BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0, FP)
+
+  BUILTIN_VDQ_I (SHIFTIMM, ashr, 3, NONE)
+  VAR1 (SHIFTIMM, ashr_simd, 0, NONE, di)
+  BUILTIN_VDQ_I (SHIFTIMM, lshr, 3, NONE)
+  VAR1 (USHIFTIMM, lshr_simd, 0, NONE, di)
   /* Implemented by aarch64_<sur>shr_n<mode>.  */
-  BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0, ALL)
-  BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0, ALL)
+  BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0, NONE)
+  BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0, NONE)
   /* Implemented by aarch64_<sur>sra_n<mode>.  */
-  BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0, ALL)
-  BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0, ALL)
-  BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0, ALL)
-  BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0, ALL)
+  BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0, NONE)
+  BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0, NONE)
+  BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0, NONE)
+  BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0, NONE)
   /* Implemented by aarch64_<sur>shll_n<mode>.  */
-  BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0, ALL)
-  BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0, ALL)
+  BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0, NONE)
+  BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0, NONE)
   /* Implemented by aarch64_<sur>shll2_n<mode>.  */
-  BUILTIN_VQW (SHIFTIMM, sshll2_n, 0, ALL)
-  BUILTIN_VQW (SHIFTIMM, ushll2_n, 0, ALL)
+  BUILTIN_VQW (SHIFTIMM, sshll2_n, 0, NONE)
+  BUILTIN_VQW (SHIFTIMM, ushll2_n, 0, NONE)
   /* Implemented by aarch64_<sur>q<r>shr<u>n_n<mode>.  */
   BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0, ALL)
   BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0, ALL)
@@ -282,166 +286,166 @@
   BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0, ALL)
   BUILTIN_VSQN_HSDI (USHIFTIMM, uqrshrn_n, 0, ALL)
   /* Implemented by aarch64_<sur>s<lr>i_n<mode>.  */
-  BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0, ALL)
-  BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0, ALL)
-  BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0, ALL)
-  VAR2 (SHIFTINSERTP, ssli_n, 0, ALL, di, v2di)
-  BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0, ALL)
+  BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0, NONE)
+  BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0, NONE)
+  BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0, NONE)
+  VAR2 (SHIFTINSERTP, ssli_n, 0, NONE, di, v2di)
+  BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0, NONE)
   /* Implemented by aarch64_<sur>qshl<u>_n<mode>.  */
   BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0, ALL)
   BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0, ALL)
   BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0, ALL)
 
   /* Implemented by aarch64_reduc_plus_<mode>.  */
-  BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, ALL)
+  BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, NONE)
 
   /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar).  */
-  BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10, ALL)
-  BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10, ALL)
-  BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10, ALL)
-  BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10, ALL)
-  BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10, ALL)
-  BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10, ALL)
+  BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10, NONE)
+  BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10, NONE)
+  BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10, NONE)
+  BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10, NONE)
+  BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10, NONE)
+  BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10, NONE)
 
   /* Implemented by <maxmin_uns><mode>3.
      smax variants map to fmaxnm,
      smax_nan variants map to fmax.  */
-  BUILTIN_VDQ_BHSI (BINOP, smax, 3, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, smin, 3, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, umax, 3, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, umin, 3, ALL)
-  BUILTIN_VHSDF_DF (BINOP, smax_nan, 3, ALL)
-  BUILTIN_VHSDF_DF (BINOP, smin_nan, 3, ALL)
+  BUILTIN_VDQ_BHSI (BINOP, smax, 3, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, smin, 3, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, umax, 3, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, umin, 3, NONE)
+  BUILTIN_VHSDF_DF (BINOP, smax_nan, 3, NONE)
+  BUILTIN_VHSDF_DF (BINOP, smin_nan, 3, NONE)
 
   /* Implemented by <maxmin_uns><mode>3.  */
-  BUILTIN_VHSDF_HSDF (BINOP, fmax, 3, ALL)
-  BUILTIN_VHSDF_HSDF (BINOP, fmin, 3, ALL)
+  BUILTIN_VHSDF_HSDF (BINOP, fmax, 3, FP)
+  BUILTIN_VHSDF_HSDF (BINOP, fmin, 3, FP)
 
   /* Implemented by aarch64_<maxmin_uns>p<mode>.  */
-  BUILTIN_VDQ_BHSI (BINOP, smaxp, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, sminp, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, umaxp, 0, ALL)
-  BUILTIN_VDQ_BHSI (BINOP, uminp, 0, ALL)
-  BUILTIN_VHSDF (BINOP, smaxp, 0, ALL)
-  BUILTIN_VHSDF (BINOP, sminp, 0, ALL)
-  BUILTIN_VHSDF (BINOP, smax_nanp, 0, ALL)
-  BUILTIN_VHSDF (BINOP, smin_nanp, 0, ALL)
+  BUILTIN_VDQ_BHSI (BINOP, smaxp, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, sminp, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, umaxp, 0, NONE)
+  BUILTIN_VDQ_BHSI (BINOP, uminp, 0, NONE)
+  BUILTIN_VHSDF (BINOP, smaxp, 0, NONE)
+  BUILTIN_VHSDF (BINOP, sminp, 0, NONE)
+  BUILTIN_VHSDF (BINOP, smax_nanp, 0, NONE)
+  BUILTIN_VHSDF (BINOP, smin_nanp, 0, NONE)
 
   /* Implemented by <frint_pattern><mode>2.  */
-  BUILTIN_VHSDF (UNOP, btrunc, 2, ALL)
-  BUILTIN_VHSDF (UNOP, ceil, 2, ALL)
-  BUILTIN_VHSDF (UNOP, floor, 2, ALL)
-  BUILTIN_VHSDF (UNOP, nearbyint, 2, ALL)
-  BUILTIN_VHSDF (UNOP, rint, 2, ALL)
-  BUILTIN_VHSDF (UNOP, round, 2, ALL)
-  BUILTIN_VHSDF_DF (UNOP, frintn, 2, ALL)
-
-  VAR1 (UNOP, btrunc, 2, ALL, hf)
-  VAR1 (UNOP, ceil, 2, ALL, hf)
-  VAR1 (UNOP, floor, 2, ALL, hf)
-  VAR1 (UNOP, frintn, 2, ALL, hf)
-  VAR1 (UNOP, nearbyint, 2, ALL, hf)
-  VAR1 (UNOP, rint, 2, ALL, hf)
-  VAR1 (UNOP, round, 2, ALL, hf)
+  BUILTIN_VHSDF (UNOP, btrunc, 2, FP)
+  BUILTIN_VHSDF (UNOP, ceil, 2, FP)
+  BUILTIN_VHSDF (UNOP, floor, 2, FP)
+  BUILTIN_VHSDF (UNOP, nearbyint, 2, FP)
+  BUILTIN_VHSDF (UNOP, rint, 2, FP)
+  BUILTIN_VHSDF (UNOP, round, 2, FP)
+  BUILTIN_VHSDF_DF (UNOP, frintn, 2, FP)
+
+  VAR1 (UNOP, btrunc, 2, FP, hf)
+  VAR1 (UNOP, ceil, 2, FP, hf)
+  VAR1 (UNOP, floor, 2, FP, hf)
+  VAR1 (UNOP, frintn, 2, FP, hf)
+  VAR1 (UNOP, nearbyint, 2, FP, hf)
+  VAR1 (UNOP, rint, 2, FP, hf)
+  VAR1 (UNOP, round, 2, FP, hf)
 
   /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2.  */
-  VAR1 (UNOP, lbtruncv4hf, 2, ALL, v4hi)
-  VAR1 (UNOP, lbtruncv8hf, 2, ALL, v8hi)
-  VAR1 (UNOP, lbtruncv2sf, 2, ALL, v2si)
-  VAR1 (UNOP, lbtruncv4sf, 2, ALL, v4si)
-  VAR1 (UNOP, lbtruncv2df, 2, ALL, v2di)
-
-  VAR1 (UNOPUS, lbtruncuv4hf, 2, ALL, v4hi)
-  VAR1 (UNOPUS, lbtruncuv8hf, 2, ALL, v8hi)
-  VAR1 (UNOPUS, lbtruncuv2sf, 2, ALL, v2si)
-  VAR1 (UNOPUS, lbtruncuv4sf, 2, ALL, v4si)
-  VAR1 (UNOPUS, lbtruncuv2df, 2, ALL, v2di)
-
-  VAR1 (UNOP, lroundv4hf, 2, ALL, v4hi)
-  VAR1 (UNOP, lroundv8hf, 2, ALL, v8hi)
-  VAR1 (UNOP, lroundv2sf, 2, ALL, v2si)
-  VAR1 (UNOP, lroundv4sf, 2, ALL, v4si)
-  VAR1 (UNOP, lroundv2df, 2, ALL, v2di)
+  VAR1 (UNOP, lbtruncv4hf, 2, FP, v4hi)
+  VAR1 (UNOP, lbtruncv8hf, 2, FP, v8hi)
+  VAR1 (UNOP, lbtruncv2sf, 2, FP, v2si)
+  VAR1 (UNOP, lbtruncv4sf, 2, FP, v4si)
+  VAR1 (UNOP, lbtruncv2df, 2, FP, v2di)
+
+  VAR1 (UNOPUS, lbtruncuv4hf, 2, FP, v4hi)
+  VAR1 (UNOPUS, lbtruncuv8hf, 2, FP, v8hi)
+  VAR1 (UNOPUS, lbtruncuv2sf, 2, FP, v2si)
+  VAR1 (UNOPUS, lbtruncuv4sf, 2, FP, v4si)
+  VAR1 (UNOPUS, lbtruncuv2df, 2, FP, v2di)
+
+  VAR1 (UNOP, lroundv4hf, 2, FP, v4hi)
+  VAR1 (UNOP, lroundv8hf, 2, FP, v8hi)
+  VAR1 (UNOP, lroundv2sf, 2, FP, v2si)
+  VAR1 (UNOP, lroundv4sf, 2, FP, v4si)
+  VAR1 (UNOP, lroundv2df, 2, FP, v2di)
   /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2.  */
-  BUILTIN_GPI_I16 (UNOP, lroundhf, 2, ALL)
-  VAR1 (UNOP, lroundsf, 2, ALL, si)
-  VAR1 (UNOP, lrounddf, 2, ALL, di)
-
-  VAR1 (UNOPUS, lrounduv4hf, 2, ALL, v4hi)
-  VAR1 (UNOPUS, lrounduv8hf, 2, ALL, v8hi)
-  VAR1 (UNOPUS, lrounduv2sf, 2, ALL, v2si)
-  VAR1 (UNOPUS, lrounduv4sf, 2, ALL, v4si)
-  VAR1 (UNOPUS, lrounduv2df, 2, ALL, v2di)
-  BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2, ALL)
-  VAR1 (UNOPUS, lroundusf, 2, ALL, si)
-  VAR1 (UNOPUS, lroundudf, 2, ALL, di)
-
-  VAR1 (UNOP, lceilv4hf, 2, ALL, v4hi)
-  VAR1 (UNOP, lceilv8hf, 2, ALL, v8hi)
-  VAR1 (UNOP, lceilv2sf, 2, ALL, v2si)
-  VAR1 (UNOP, lceilv4sf, 2, ALL, v4si)
-  VAR1 (UNOP, lceilv2df, 2, ALL, v2di)
-  BUILTIN_GPI_I16 (UNOP, lceilhf, 2, ALL)
-
-  VAR1 (UNOPUS, lceiluv4hf, 2, ALL, v4hi)
-  VAR1 (UNOPUS, lceiluv8hf, 2, ALL, v8hi)
-  VAR1 (UNOPUS, lceiluv2sf, 2, ALL, v2si)
-  VAR1 (UNOPUS, lceiluv4sf, 2, ALL, v4si)
-  VAR1 (UNOPUS, lceiluv2df, 2, ALL, v2di)
-  BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2, ALL)
-  VAR1 (UNOPUS, lceilusf, 2, ALL, si)
-  VAR1 (UNOPUS, lceiludf, 2, ALL, di)
-
-  VAR1 (UNOP, lfloorv4hf, 2, ALL, v4hi)
-  VAR1 (UNOP, lfloorv8hf, 2, ALL, v8hi)
-  VAR1 (UNOP, lfloorv2sf, 2, ALL, v2si)
-  VAR1 (UNOP, lfloorv4sf, 2, ALL, v4si)
-  VAR1 (UNOP, lfloorv2df, 2, ALL, v2di)
-  BUILTIN_GPI_I16 (UNOP, lfloorhf, 2, ALL)
-
-  VAR1 (UNOPUS, lflooruv4hf, 2, ALL, v4hi)
-  VAR1 (UNOPUS, lflooruv8hf, 2, ALL, v8hi)
-  VAR1 (UNOPUS, lflooruv2sf, 2, ALL, v2si)
-  VAR1 (UNOPUS, lflooruv4sf, 2, ALL, v4si)
-  VAR1 (UNOPUS, lflooruv2df, 2, ALL, v2di)
-  BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2, ALL)
-  VAR1 (UNOPUS, lfloorusf, 2, ALL, si)
-  VAR1 (UNOPUS, lfloorudf, 2, ALL, di)
-
-  VAR1 (UNOP, lfrintnv4hf, 2, ALL, v4hi)
-  VAR1 (UNOP, lfrintnv8hf, 2, ALL, v8hi)
-  VAR1 (UNOP, lfrintnv2sf, 2, ALL, v2si)
-  VAR1 (UNOP, lfrintnv4sf, 2, ALL, v4si)
-  VAR1 (UNOP, lfrintnv2df, 2, ALL, v2di)
-  BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2, ALL)
-  VAR1 (UNOP, lfrintnsf, 2, ALL, si)
-  VAR1 (UNOP, lfrintndf, 2, ALL, di)
-
-  VAR1 (UNOPUS, lfrintnuv4hf, 2, ALL, v4hi)
-  VAR1 (UNOPUS, lfrintnuv8hf, 2, ALL, v8hi)
-  VAR1 (UNOPUS, lfrintnuv2sf, 2, ALL, v2si)
-  VAR1 (UNOPUS, lfrintnuv4sf, 2, ALL, v4si)
-  VAR1 (UNOPUS, lfrintnuv2df, 2, ALL, v2di)
-  BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2, ALL)
-  VAR1 (UNOPUS, lfrintnusf, 2, ALL, si)
-  VAR1 (UNOPUS, lfrintnudf, 2, ALL, di)
+  BUILTIN_GPI_I16 (UNOP, lroundhf, 2, FP)
+  VAR1 (UNOP, lroundsf, 2, FP, si)
+  VAR1 (UNOP, lrounddf, 2, FP, di)
+
+  VAR1 (UNOPUS, lrounduv4hf, 2, FP, v4hi)
+  VAR1 (UNOPUS, lrounduv8hf, 2, FP, v8hi)
+  VAR1 (UNOPUS, lrounduv2sf, 2, FP, v2si)
+  VAR1 (UNOPUS, lrounduv4sf, 2, FP, v4si)
+  VAR1 (UNOPUS, lrounduv2df, 2, FP, v2di)
+  BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2, FP)
+  VAR1 (UNOPUS, lroundusf, 2, FP, si)
+  VAR1 (UNOPUS, lroundudf, 2, FP, di)
+
+  VAR1 (UNOP, lceilv4hf, 2, FP, v4hi)
+  VAR1 (UNOP, lceilv8hf, 2, FP, v8hi)
+  VAR1 (UNOP, lceilv2sf, 2, FP, v2si)
+  VAR1 (UNOP, lceilv4sf, 2, FP, v4si)
+  VAR1 (UNOP, lceilv2df, 2, FP, v2di)
+  BUILTIN_GPI_I16 (UNOP, lceilhf, 2, FP)
+
+  VAR1 (UNOPUS, lceiluv4hf, 2, FP, v4hi)
+  VAR1 (UNOPUS, lceiluv8hf, 2, FP, v8hi)
+  VAR1 (UNOPUS, lceiluv2sf, 2, FP, v2si)
+  VAR1 (UNOPUS, lceiluv4sf, 2, FP, v4si)
+  VAR1 (UNOPUS, lceiluv2df, 2, FP, v2di)
+  BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2, FP)
+  VAR1 (UNOPUS, lceilusf, 2, FP, si)
+  VAR1 (UNOPUS, lceiludf, 2, FP, di)
+
+  VAR1 (UNOP, lfloorv4hf, 2, FP, v4hi)
+  VAR1 (UNOP, lfloorv8hf, 2, FP, v8hi)
+  VAR1 (UNOP, lfloorv2sf, 2, FP, v2si)
+  VAR1 (UNOP, lfloorv4sf, 2, FP, v4si)
+  VAR1 (UNOP, lfloorv2df, 2, FP, v2di)
+  BUILTIN_GPI_I16 (UNOP, lfloorhf, 2, FP)
+
+  VAR1 (UNOPUS, lflooruv4hf, 2, FP, v4hi)
+  VAR1 (UNOPUS, lflooruv8hf, 2, FP, v8hi)
+  VAR1 (UNOPUS, lflooruv2sf, 2, FP, v2si)
+  VAR1 (UNOPUS, lflooruv4sf, 2, FP, v4si)
+  VAR1 (UNOPUS, lflooruv2df, 2, FP, v2di)
+  BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2, FP)
+  VAR1 (UNOPUS, lfloorusf, 2, FP, si)
+  VAR1 (UNOPUS, lfloorudf, 2, FP, di)
+
+  VAR1 (UNOP, lfrintnv4hf, 2, FP, v4hi)
+  VAR1 (UNOP, lfrintnv8hf, 2, FP, v8hi)
+  VAR1 (UNOP, lfrintnv2sf, 2, FP, v2si)
+  VAR1 (UNOP, lfrintnv4sf, 2, FP, v4si)
+  VAR1 (UNOP, lfrintnv2df, 2, FP, v2di)
+  BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2, FP)
+  VAR1 (UNOP, lfrintnsf, 2, FP, si)
+  VAR1 (UNOP, lfrintndf, 2, FP, di)
+
+  VAR1 (UNOPUS, lfrintnuv4hf, 2, FP, v4hi)
+  VAR1 (UNOPUS, lfrintnuv8hf, 2, FP, v8hi)
+  VAR1 (UNOPUS, lfrintnuv2sf, 2, FP, v2si)
+  VAR1 (UNOPUS, lfrintnuv4sf, 2, FP, v4si)
+  VAR1 (UNOPUS, lfrintnuv2df, 2, FP, v2di)
+  BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2, FP)
+  VAR1 (UNOPUS, lfrintnusf, 2, FP, si)
+  VAR1 (UNOPUS, lfrintnudf, 2, FP, di)
 
   /* Implemented by <optab><fcvt_target><VDQF:mode>2.  */
-  VAR1 (UNOP, floatv4hi, 2, ALL, v4hf)
-  VAR1 (UNOP, floatv8hi, 2, ALL, v8hf)
-  VAR1 (UNOP, floatv2si, 2, ALL, v2sf)
-  VAR1 (UNOP, floatv4si, 2, ALL, v4sf)
-  VAR1 (UNOP, floatv2di, 2, ALL, v2df)
+  VAR1 (UNOP, floatv4hi, 2, FP, v4hf)
+  VAR1 (UNOP, floatv8hi, 2, FP, v8hf)
+  VAR1 (UNOP, floatv2si, 2, FP, v2sf)
+  VAR1 (UNOP, floatv4si, 2, FP, v4sf)
+  VAR1 (UNOP, floatv2di, 2, FP, v2df)
 
-  VAR1 (UNOP, floatunsv4hi, 2, ALL, v4hf)
-  VAR1 (UNOP, floatunsv8hi, 2, ALL, v8hf)
-  VAR1 (UNOP, floatunsv2si, 2, ALL, v2sf)
-  VAR1 (UNOP, floatunsv4si, 2, ALL, v4sf)
-  VAR1 (UNOP, floatunsv2di, 2, ALL, v2df)
+  VAR1 (UNOP, floatunsv4hi, 2, FP, v4hf)
+  VAR1 (UNOP, floatunsv8hi, 2, FP, v8hf)
+  VAR1 (UNOP, floatunsv2si, 2, FP, v2sf)
+  VAR1 (UNOP, floatunsv4si, 2, FP, v4sf)
+  VAR1 (UNOP, floatunsv2di, 2, FP, v2df)
 
-  VAR5 (UNOPU, bswap, 2, ALL, v4hi, v8hi, v2si, v4si, v2di)
+  VAR5 (UNOPU, bswap, 2, NONE, v4hi, v8hi, v2si, v4si, v2di)
 
-  BUILTIN_VB (UNOP, rbit, 0, ALL)
+  BUILTIN_VB (UNOP, rbit, 0, NONE)
 
   /* Implemented by
      aarch64_<PERMUTE:perm_insn><mode>.  */
diff --git a/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c b/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
index a7b7cd3bd8d..ef70f75e75e 100644
--- a/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
@@ -3,7 +3,7 @@
 
 #include "arm_neon.h"
 
-void foo (int a)
+int32x2_t foo (int a)
 {
   int32x2_t arg1;
   int32x2_t arg2;
@@ -15,4 +15,5 @@ void foo (int a)
      we have to tell dg-error to ignore the line number.  */
   result = vrsra_n_s32 (arg1, arg2, a);
   /* { dg-error "must be a constant immediate" "" { target *-*-* } 0 } */
+  return result;
 }
-- 
2.19.1


  reply	other threads:[~2020-08-25  3:14 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-02 13:22 xiezhiheng
2020-07-02 14:45 ` Richard Biener
2020-07-06  9:10   ` xiezhiheng
2020-07-06  9:31     ` Richard Sandiford
2020-07-07 12:49       ` xiezhiheng
2020-07-07 14:07         ` Richard Sandiford
2020-07-15  8:49           ` xiezhiheng
2020-07-16 12:41             ` Richard Sandiford
2020-07-16 14:05               ` xiezhiheng
2020-07-17  9:03                 ` Richard Sandiford
2020-07-30  2:43                   ` xiezhiheng
2020-07-31  9:02                     ` Richard Sandiford
2020-08-03  2:21                       ` xiezhiheng
2020-08-03 13:55                         ` Richard Sandiford
2020-08-04  8:01                           ` xiezhiheng
2020-08-04 16:25                             ` Richard Sandiford
2020-08-17  8:05                               ` xiezhiheng
2020-08-19 10:06                                 ` Richard Sandiford
2020-08-20  8:24                                   ` xiezhiheng
2020-08-20  8:55                                     ` Richard Sandiford
2020-08-20 12:16                                       ` xiezhiheng
2020-08-21  9:02                                         ` Richard Sandiford
2020-08-25  3:14                                           ` xiezhiheng [this message]
2020-08-25 11:07                                             ` Richard Sandiford
2020-08-26  1:39                                               ` xiezhiheng
2020-08-26 10:14                                                 ` Richard Sandiford
2020-08-27  2:50                                                   ` xiezhiheng
2020-08-27  8:08                                                     ` Richard Sandiford
2020-10-09  9:32                                                       ` xiezhiheng
2020-10-13  8:07                                                         ` Richard Sandiford
2020-10-19  9:21                                                           ` xiezhiheng
2020-10-20 16:53                                                             ` Richard Sandiford
2020-10-22  9:16                                                               ` xiezhiheng
2020-10-26 13:03                                                                 ` Richard Sandiford
2020-10-30  6:41                                                                   ` xiezhiheng
2020-10-30 10:23                                                                     ` Richard Sandiford
2020-11-03 11:59                                                                       ` xiezhiheng
2020-11-03 13:57                                                                         ` Richard Sandiford
2020-11-09  3:27                                                                           ` xiezhiheng
2020-11-10 11:53                                                                             ` Richard Sandiford
2020-11-11  7:59                                                                               ` xiezhiheng
2020-11-11 10:59                                                                                 ` Richard Sandiford
  -- strict thread matches above, loose matches on Subject: below --
2020-04-02  6:35 xiezhiheng
2020-06-09 20:40 ` Jeff Law

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0ce8ec84dff744aeb3967cf8416e541d@huawei.com \
    --to=xiezhiheng@huawei.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=richard.guenther@gmail.com \
    --cc=richard.sandiford@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).