aarch64: Relax some builtins to AUTO_FP
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 1 Feb 2021 21:21:38 +0000 (21:21 +0000)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Tue, 2 Feb 2021 12:14:39 +0000 (12:14 +0000)
This patch relaxes the flags for some builtins to AUTO_FP. These
builtins do permutes and similar, so they shouldn't get the FP flags
when operating on floating-point modes as they don't care about
FPCR/FPSR and exceptions.

gcc/ChangeLog:

* config/aarch64/aarch64-simd-builtins.def (combine, zip1, zip2,
uzp1, uzp2, trn1, trn2, simd_bsl): Use AUTO_FP flags.

gcc/config/aarch64/aarch64-simd-builtins.def

index 224cff33e35e7864769bfe73e3bab2a4424c4b27..45573c2f537f6f64255d8d4d6788d99d7a5f4797 100644 (file)
@@ -43,8 +43,8 @@
    help describe the attributes (for example, pure) for the intrinsic
    function.  */
 
-  BUILTIN_VDC (COMBINE, combine, 0, ALL)
-  VAR1 (COMBINEP, combine, 0, ALL, di)
+  BUILTIN_VDC (COMBINE, combine, 0, AUTO_FP)
+  VAR1 (COMBINEP, combine, 0, NONE, di)
   BUILTIN_VB (BINOP, pmul, 0, NONE)
   BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0, FP)
   BUILTIN_VHSDF_DF (UNOP, sqrt, 2, FP)
 
   /* Implemented by
      aarch64_<PERMUTE:perm_insn><mode>.  */
-  BUILTIN_VALL (BINOP, zip1, 0, ALL)
-  BUILTIN_VALL (BINOP, zip2, 0, ALL)
-  BUILTIN_VALL (BINOP, uzp1, 0, ALL)
-  BUILTIN_VALL (BINOP, uzp2, 0, ALL)
-  BUILTIN_VALL (BINOP, trn1, 0, ALL)
-  BUILTIN_VALL (BINOP, trn2, 0, ALL)
+  BUILTIN_VALL (BINOP, zip1, 0, AUTO_FP)
+  BUILTIN_VALL (BINOP, zip2, 0, AUTO_FP)
+  BUILTIN_VALL (BINOP, uzp1, 0, AUTO_FP)
+  BUILTIN_VALL (BINOP, uzp2, 0, AUTO_FP)
+  BUILTIN_VALL (BINOP, trn1, 0, AUTO_FP)
+  BUILTIN_VALL (BINOP, trn2, 0, AUTO_FP)
 
   BUILTIN_GPF_F16 (UNOP, frecpe, 0, FP)
   BUILTIN_GPF_F16 (UNOP, frecpx, 0, FP)
   BUILTIN_VDQQH (BSL_P, simd_bsl, 0, NONE)
   VAR2 (BSL_P, simd_bsl,0, NONE, di, v2di)
   BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0, NONE)
-  BUILTIN_VALLDIF (BSL_S, simd_bsl, 0, ALL)
+  BUILTIN_VALLDIF (BSL_S, simd_bsl, 0, AUTO_FP)
 
   /* Implemented by aarch64_crypto_aes<op><mode>.  */
   VAR1 (BINOPU, crypto_aese, 0, NONE, v16qi)