AArch64: Add FLAG for rounding intrinsics [PR94442]
authorxiezhiheng <xiezhiheng@huawei.com>
Thu, 27 Aug 2020 08:07:26 +0000 (09:07 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 27 Aug 2020 08:07:26 +0000 (09:07 +0100)
2020-08-27  Zhiheng Xie  <xiezhiheng@huawei.com>

gcc/ChangeLog:

* config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
for rounding intrinsics.

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

index a9b47e4ea1f92d2f01abecdc4ddf272ffdca1e63..d1b21102b2f740c7a38a585e171f0a9a6e278ac9 100644 (file)
   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)