summaryrefslogtreecommitdiff
path: root/gcc/config/aarch64/aarch64-simd-builtins.def
diff options
context:
space:
mode:
authorjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-01 15:16:14 +0000
committerjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-01 15:16:14 +0000
commit2520d4b76de2bb0ba40965e2d8ef6bc5f666eec0 (patch)
tree8c97b2f32f48d2d9aa61efecaa8c314717bee6d4 /gcc/config/aarch64/aarch64-simd-builtins.def
parent4746ccb17c0442052931e3f192468d282039aa37 (diff)
downloadgcc-2520d4b76de2bb0ba40965e2d8ef6bc5f666eec0.tar.gz
[AArch64] Refactor vector max and min RTL and builtins.
gcc/ * config/aarch64/aarch64-simd-builtins.def (reduc_smax_): New. (reduc_smin_): Likewise. (reduc_umax_): Likewise. (reduc_umin_): Likewise. (reduc_smax_nan_): Likewise. (reduc_smin_nan_): Likewise. (fmax): Remove. (fmin): Likewise. (smax): Update for V2SF, V4SF and V2DF modes. (smin): Likewise. (smax_nan): New. (smin_nan): Likewise. * config/aarch64/aarch64-simd.md (<maxmin><mode>3): Rename to... (<su><maxmin><mode>3): ...This, refactor. (s<maxmin><mode>3): New. (<maxmin_uns><mode>3): Likewise. (reduc_<maxmin_uns>_<mode>): Refactor. (reduc_<maxmin_uns>_v4sf): Likewise. (reduc_<maxmin_uns>_v2si): Likewise. (aarch64_<fmaxmin><mode>: Remove. * config/aarch64/arm_neon.h (vmax<q>_f<32,64>): Rewrite to use new builtin names. (vmin<q>_f<32,64>): Likewise. * config/iterators.md (unspec): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV. (FMAXMIN): New. (su): Add mappings for smax, smin, umax, umin. (maxmin): New. (FMAXMINV): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV. (FMAXMIN): Rename as... (FMAXMIN_UNS): ...This. (maxminv): Remove. (fmaxminv): Likewise. (fmaxmin): Likewise. (maxmin_uns): New. (maxmin_uns_op): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198497 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/aarch64/aarch64-simd-builtins.def')
-rw-r--r--gcc/config/aarch64/aarch64-simd-builtins.def22
1 files changed, 15 insertions, 7 deletions
diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def
index 620406b449d..97a597e2e2c 100644
--- a/gcc/config/aarch64/aarch64-simd-builtins.def
+++ b/gcc/config/aarch64/aarch64-simd-builtins.def
@@ -234,18 +234,26 @@
BUILTIN_VSDQ_I_DI (BINOP, cmgtu, 0)
BUILTIN_VSDQ_I_DI (BINOP, cmtst, 0)
- /* Implemented by aarch64_<fmaxmin><mode>. */
- BUILTIN_VDQF (BINOP, fmax, 0)
- BUILTIN_VDQF (BINOP, fmin, 0)
-
/* Implemented by aarch64_addv<mode>. */
BUILTIN_VDQF (UNOP, addv, 0)
- /* Implemented by <maxmin><mode>3. */
- BUILTIN_VDQ_BHSI (BINOP, smax, 3)
- BUILTIN_VDQ_BHSI (BINOP, smin, 3)
+ /* Implemented by reduc_<maxmin_uns>_<mode>. */
+ BUILTIN_VDQIF (UNOP, reduc_smax_, 10)
+ BUILTIN_VDQIF (UNOP, reduc_smin_, 10)
+ BUILTIN_VDQ_BHSI (UNOP, reduc_umax_, 10)
+ BUILTIN_VDQ_BHSI (UNOP, reduc_umin_, 10)
+ BUILTIN_VDQF (UNOP, reduc_smax_nan_, 10)
+ BUILTIN_VDQF (UNOP, reduc_smin_nan_, 10)
+
+ /* Implemented by <maxmin><mode>3.
+ smax variants map to fmaxnm,
+ smax_nan variants map to fmax. */
+ BUILTIN_VDQIF (BINOP, smax, 3)
+ BUILTIN_VDQIF (BINOP, smin, 3)
BUILTIN_VDQ_BHSI (BINOP, umax, 3)
BUILTIN_VDQ_BHSI (BINOP, umin, 3)
+ BUILTIN_VDQF (BINOP, smax_nan, 3)
+ BUILTIN_VDQF (BINOP, smin_nan, 3)
/* Implemented by <frint_pattern><mode>2. */
BUILTIN_VDQF (UNOP, btrunc, 2)