From: Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>
To: Christophe Lyon <christophe.lyon@linaro.org>
Cc: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>
Subject: RE: [PATCH 5/9] arm: MVE: Factorize vcmp_*f*
Date: Mon, 10 May 2021 11:59:57 +0000 [thread overview]
Message-ID: <PAXPR08MB6926043CC6D7F0EB0B8A143C93549@PAXPR08MB6926.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <1619791790-628-5-git-send-email-christophe.lyon@linaro.org>
> -----Original Message-----
> From: Gcc-patches <gcc-patches-bounces@gcc.gnu.org> On Behalf Of
> Christophe Lyon via Gcc-patches
> Sent: 30 April 2021 15:10
> To: gcc-patches@gcc.gnu.org
> Subject: [PATCH 5/9] arm: MVE: Factorize vcmp_*f*
>
> Like in the previous, we factorize the vcmp_*f* patterns to make
> maintenance easier.
Ok.
Thanks,
Kyrill
>
> 2021-03-12 Christophe Lyon <christophe.lyon@linaro.org>
>
> gcc/
> * config/arm/iterators.md (MVE_FP_COMPARISONS): New.
> * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_f<mode>)
> (mve_vcmp<mve_cmp_op>q_n_f<mode>): New, merge all vcmp_*f*
> patterns.
> (mve_vcmpeqq_f<mode>, mve_vcmpeqq_n_f<mode>,
> mve_vcmpgeq_f<mode>)
> (mve_vcmpgeq_n_f<mode>, mve_vcmpgtq_f<mode>)
> (mve_vcmpgtq_n_f<mode>, mve_vcmpleq_f<mode>)
> (mve_vcmpleq_n_f<mode>, mve_vcmpltq_f<mode>)
> (mve_vcmpltq_n_f<mode>, mve_vcmpneq_f<mode>)
> (mve_vcmpneq_n_f<mode>): Remove.
> * config/arm/unspecs.md (VCMPEQQ_F, VCMPEQQ_N_F,
> VCMPGEQ_F)
> (VCMPGEQ_N_F, VCMPGTQ_F, VCMPGTQ_N_F, VCMPLEQ_F,
> VCMPLEQ_N_F)
> (VCMPLTQ_F, VCMPLTQ_N_F, VCMPNEQ_F, VCMPNEQ_N_F):
> Remove.
> ---
> gcc/config/arm/iterators.md | 1 +
> gcc/config/arm/mve.md | 172 +++-----------------------------------------
> gcc/config/arm/unspecs.md | 12 ----
> 3 files changed, 11 insertions(+), 174 deletions(-)
>
> diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md
> index 29347f7..95df8bd 100644
> --- a/gcc/config/arm/iterators.md
> +++ b/gcc/config/arm/iterators.md
> @@ -287,6 +287,7 @@ (define_code_iterator GTUGEU [gtu geu])
> (define_code_iterator COMPARISONS [eq gt ge le lt])
> ;; Comparisons for MVE
> (define_code_iterator MVE_COMPARISONS [eq ge geu gt gtu le lt ne])
> +(define_code_iterator MVE_FP_COMPARISONS [eq ge gt le lt ne])
>
> ;; A list of ...
> (define_code_iterator IOR_XOR [ior xor])
> diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md
> index 40baff7..7c846a4 100644
> --- a/gcc/config/arm/mve.md
> +++ b/gcc/config/arm/mve.md
> @@ -1926,182 +1926,30 @@ (define_insn "mve_vcaddq<mve_rot><mode>"
> ])
>
> ;;
> -;; [vcmpeqq_f])
> +;; [vcmpeqq_f, vcmpgeq_f, vcmpgtq_f, vcmpleq_f, vcmpltq_f, vcmpneq_f])
> ;;
> -(define_insn "mve_vcmpeqq_f<mode>"
> +(define_insn "mve_vcmp<mve_cmp_op>q_f<mode>"
> [
> (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:MVE_0 2 "s_register_operand" "w")]
> - VCMPEQQ_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> eq, %q1, %q2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpeqq_n_f])
> -;;
> -(define_insn "mve_vcmpeqq_n_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:<V_elem> 2 "s_register_operand" "r")]
> - VCMPEQQ_N_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> eq, %q1, %2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpgeq_f])
> -;;
> -(define_insn "mve_vcmpgeq_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:MVE_0 2 "s_register_operand" "w")]
> - VCMPGEQ_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> ge, %q1, %q2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpgeq_n_f])
> -;;
> -(define_insn "mve_vcmpgeq_n_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:<V_elem> 2 "s_register_operand" "r")]
> - VCMPGEQ_N_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> ge, %q1, %2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpgtq_f])
> -;;
> -(define_insn "mve_vcmpgtq_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:MVE_0 2 "s_register_operand" "w")]
> - VCMPGTQ_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> gt, %q1, %q2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpgtq_n_f])
> -;;
> -(define_insn "mve_vcmpgtq_n_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:<V_elem> 2 "s_register_operand" "r")]
> - VCMPGTQ_N_F))
> + (MVE_FP_COMPARISONS:HI (match_operand:MVE_0 1
> "s_register_operand" "w")
> + (match_operand:MVE_0 2 "s_register_operand"
> "w")))
> ]
> "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> gt, %q1, %2"
> + "vcmp.f%#<V_sz_elem> <mve_cmp_op>, %q1, %q2"
> [(set_attr "type" "mve_move")
> ])
>
> ;;
> -;; [vcmpleq_f])
> +;; [vcmpeqq_n_f, vcmpgeq_n_f, vcmpgtq_n_f, vcmpleq_n_f, vcmpltq_n_f,
> vcmpneq_n_f])
> ;;
> -(define_insn "mve_vcmpleq_f<mode>"
> +(define_insn "mve_vcmp<mve_cmp_op>q_n_f<mode>"
> [
> (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:MVE_0 2 "s_register_operand" "w")]
> - VCMPLEQ_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> le, %q1, %q2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpleq_n_f])
> -;;
> -(define_insn "mve_vcmpleq_n_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:<V_elem> 2 "s_register_operand" "r")]
> - VCMPLEQ_N_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> le, %q1, %2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpltq_f])
> -;;
> -(define_insn "mve_vcmpltq_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:MVE_0 2 "s_register_operand" "w")]
> - VCMPLTQ_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> lt, %q1, %q2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpltq_n_f])
> -;;
> -(define_insn "mve_vcmpltq_n_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:<V_elem> 2 "s_register_operand" "r")]
> - VCMPLTQ_N_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> lt, %q1, %2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpneq_f])
> -;;
> -(define_insn "mve_vcmpneq_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:MVE_0 2 "s_register_operand" "w")]
> - VCMPNEQ_F))
> - ]
> - "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> ne, %q1, %q2"
> - [(set_attr "type" "mve_move")
> -])
> -
> -;;
> -;; [vcmpneq_n_f])
> -;;
> -(define_insn "mve_vcmpneq_n_f<mode>"
> - [
> - (set (match_operand:HI 0 "vpr_register_operand" "=Up")
> - (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w")
> - (match_operand:<V_elem> 2 "s_register_operand" "r")]
> - VCMPNEQ_N_F))
> + (MVE_FP_COMPARISONS:HI (match_operand:MVE_0 1
> "s_register_operand" "w")
> + (match_operand:<V_elem> 2
> "s_register_operand" "r")))
> ]
> "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
> - "vcmp.f%#<V_sz_elem> ne, %q1, %2"
> + "vcmp.f%#<V_sz_elem> <mve_cmp_op>, %q1, %2"
> [(set_attr "type" "mve_move")
> ])
>
> diff --git a/gcc/config/arm/unspecs.md b/gcc/config/arm/unspecs.md
> index 4d47ab7..07ca53b 100644
> --- a/gcc/config/arm/unspecs.md
> +++ b/gcc/config/arm/unspecs.md
> @@ -710,18 +710,6 @@ (define_c_enum "unspec" [
> VABDQ_M_U
> VABDQ_F
> VADDQ_N_F
> - VCMPEQQ_F
> - VCMPEQQ_N_F
> - VCMPGEQ_F
> - VCMPGEQ_N_F
> - VCMPGTQ_F
> - VCMPGTQ_N_F
> - VCMPLEQ_F
> - VCMPLEQ_N_F
> - VCMPLTQ_F
> - VCMPLTQ_N_F
> - VCMPNEQ_F
> - VCMPNEQ_N_F
> VMAXNMAQ_F
> VMAXNMAVQ_F
> VMAXNMQ_F
> --
> 2.7.4
next prev parent reply other threads:[~2021-05-10 12:00 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-30 14:09 [PATCH 1/9] arm: MVE: Convert vcmp[eq|ne]* in arm_mve.h to use only 's' builtin version Christophe Lyon
2021-04-30 14:09 ` [PATCH 2/9] arm: MVE: Cleanup vcmpne/vcmpeq builtins Christophe Lyon
2021-05-10 11:57 ` Kyrylo Tkachov
2021-04-30 14:09 ` [PATCH 3/9] arm: MVE: Remove _s and _u suffixes from vcmp* builtins Christophe Lyon
2021-05-10 11:58 ` Kyrylo Tkachov
2021-04-30 14:09 ` [PATCH 4/9] arm: MVE: Factorize all vcmp* integer patterns Christophe Lyon
2021-05-10 11:59 ` Kyrylo Tkachov
2021-04-30 14:09 ` [PATCH 5/9] arm: MVE: Factorize vcmp_*f* Christophe Lyon
2021-05-10 11:59 ` Kyrylo Tkachov [this message]
2021-04-30 14:09 ` [PATCH 6/9] arm: Auto-vectorization for MVE: vcmp Christophe Lyon
2021-05-04 11:29 ` Andre Vieira (lists)
2021-05-04 13:41 ` Christophe Lyon
2021-05-05 14:08 ` Christophe Lyon
2021-05-17 9:54 ` Christophe Lyon
2021-05-17 10:35 ` Kyrylo Tkachov
2021-05-17 12:31 ` Christophe Lyon
2021-04-30 14:09 ` [PATCH 7/9] arm: Auto-vectorization for MVE: add __fp16 support to VCMP Christophe Lyon
2021-05-04 11:48 ` Andre Vieira (lists)
2021-05-04 13:43 ` Christophe Lyon
2021-05-04 17:03 ` Christophe Lyon
2021-05-05 14:09 ` Christophe Lyon
2021-05-17 9:54 ` Christophe Lyon
2021-05-17 10:49 ` Kyrylo Tkachov
2021-04-30 14:09 ` [PATCH 8/9] arm: Auto-vectorization for MVE: vld2/vst2 Christophe Lyon
2021-05-17 9:55 ` Christophe Lyon
2021-05-24 7:19 ` Christophe Lyon
2021-05-24 12:15 ` Kyrylo Tkachov
2021-04-30 14:09 ` [PATCH 9/9] arm: Auto-vectorization for MVE: vld4/vst4 Christophe Lyon
2021-05-04 12:03 ` Andre Vieira (lists)
2021-05-04 14:57 ` Christophe Lyon
2021-05-17 9:55 ` Christophe Lyon
2021-05-24 7:20 ` Christophe Lyon
2021-05-24 12:15 ` Kyrylo Tkachov
2021-05-10 11:21 ` [PATCH 1/9] arm: MVE: Convert vcmp[eq|ne]* in arm_mve.h to use only 's' builtin version Christophe Lyon
2021-05-10 11:54 ` Kyrylo Tkachov
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=PAXPR08MB6926043CC6D7F0EB0B8A143C93549@PAXPR08MB6926.eurprd08.prod.outlook.com \
--to=kyrylo.tkachov@arm.com \
--cc=christophe.lyon@linaro.org \
--cc=gcc-patches@gcc.gnu.org \
/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).