> -----Original Message----- > From: Christophe Lyon <christophe.l...@arm.com> > Sent: Tuesday, April 18, 2023 2:46 PM > To: gcc-patches@gcc.gnu.org; Kyrylo Tkachov <kyrylo.tkac...@arm.com>; > Richard Earnshaw <richard.earns...@arm.com>; Richard Sandiford > <richard.sandif...@arm.com> > Cc: Christophe Lyon <christophe.l...@arm.com> > Subject: [PATCH 08/22] arm: [MVE intrinsics] rework vaddq vmulq vsubq > > Implement vaddq, vmulq, vsubq using the new MVE builtins framework. > > 2022-09-08 Christophe Lyon <christophe.l...@arm.com> > > gcc/ > > * config/arm/arm-mve-builtins-base.cc > (FUNCTION_WITH_RTX_M_N): > New. > (vaddq, vmulq, vsubq): New. > * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New. > * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New. > * config/arm/arm_mve.h (vaddq): Remove. > (vaddq_m): Remove. > (vaddq_x): Remove. > (vaddq_n_u8): Remove. > (vaddq_n_s8): Remove. > (vaddq_n_u16): Remove. > (vaddq_n_s16): Remove. > (vaddq_n_u32): Remove. > (vaddq_n_s32): Remove. > (vaddq_n_f16): Remove. > (vaddq_n_f32): Remove. > (vaddq_m_n_s8): Remove. > (vaddq_m_n_s32): Remove. > (vaddq_m_n_s16): Remove. > (vaddq_m_n_u8): Remove. > (vaddq_m_n_u32): Remove. > (vaddq_m_n_u16): Remove. > (vaddq_m_s8): Remove. > (vaddq_m_s32): Remove. > (vaddq_m_s16): Remove. > (vaddq_m_u8): Remove. > (vaddq_m_u32): Remove. > (vaddq_m_u16): Remove. > (vaddq_m_f32): Remove. > (vaddq_m_f16): Remove. > (vaddq_m_n_f32): Remove. > (vaddq_m_n_f16): Remove. > (vaddq_s8): Remove. > (vaddq_s16): Remove. > (vaddq_s32): Remove. > (vaddq_u8): Remove. > (vaddq_u16): Remove. > (vaddq_u32): Remove. > (vaddq_f16): Remove. > (vaddq_f32): Remove. > (vaddq_x_s8): Remove. > (vaddq_x_s16): Remove. > (vaddq_x_s32): Remove. > (vaddq_x_n_s8): Remove. > (vaddq_x_n_s16): Remove. > (vaddq_x_n_s32): Remove. > (vaddq_x_u8): Remove. > (vaddq_x_u16): Remove. > (vaddq_x_u32): Remove. > (vaddq_x_n_u8): Remove. > (vaddq_x_n_u16): Remove. > (vaddq_x_n_u32): Remove. > (vaddq_x_f16): Remove. > (vaddq_x_f32): Remove. > (vaddq_x_n_f16): Remove. > (vaddq_x_n_f32): Remove. > (__arm_vaddq_n_u8): Remove. > (__arm_vaddq_n_s8): Remove. > (__arm_vaddq_n_u16): Remove. > (__arm_vaddq_n_s16): Remove. > (__arm_vaddq_n_u32): Remove. > (__arm_vaddq_n_s32): Remove. > (__arm_vaddq_m_n_s8): Remove. > (__arm_vaddq_m_n_s32): Remove. > (__arm_vaddq_m_n_s16): Remove. > (__arm_vaddq_m_n_u8): Remove. > (__arm_vaddq_m_n_u32): Remove. > (__arm_vaddq_m_n_u16): Remove. > (__arm_vaddq_m_s8): Remove. > (__arm_vaddq_m_s32): Remove. > (__arm_vaddq_m_s16): Remove. > (__arm_vaddq_m_u8): Remove. > (__arm_vaddq_m_u32): Remove. > (__arm_vaddq_m_u16): Remove. > (__arm_vaddq_s8): Remove. > (__arm_vaddq_s16): Remove. > (__arm_vaddq_s32): Remove. > (__arm_vaddq_u8): Remove. > (__arm_vaddq_u16): Remove. > (__arm_vaddq_u32): Remove. > (__arm_vaddq_x_s8): Remove. > (__arm_vaddq_x_s16): Remove. > (__arm_vaddq_x_s32): Remove. > (__arm_vaddq_x_n_s8): Remove. > (__arm_vaddq_x_n_s16): Remove. > (__arm_vaddq_x_n_s32): Remove. > (__arm_vaddq_x_u8): Remove. > (__arm_vaddq_x_u16): Remove. > (__arm_vaddq_x_u32): Remove. > (__arm_vaddq_x_n_u8): Remove. > (__arm_vaddq_x_n_u16): Remove. > (__arm_vaddq_x_n_u32): Remove. > (__arm_vaddq_n_f16): Remove. > (__arm_vaddq_n_f32): Remove. > (__arm_vaddq_m_f32): Remove. > (__arm_vaddq_m_f16): Remove. > (__arm_vaddq_m_n_f32): Remove. > (__arm_vaddq_m_n_f16): Remove. > (__arm_vaddq_f16): Remove. > (__arm_vaddq_f32): Remove. > (__arm_vaddq_x_f16): Remove. > (__arm_vaddq_x_f32): Remove. > (__arm_vaddq_x_n_f16): Remove. > (__arm_vaddq_x_n_f32): Remove. > (__arm_vaddq): Remove. > (__arm_vaddq_m): Remove. > (__arm_vaddq_x): Remove. > (vmulq): Remove. > (vmulq_m): Remove. > (vmulq_x): Remove. > (vmulq_u8): Remove. > (vmulq_n_u8): Remove. > (vmulq_s8): Remove. > (vmulq_n_s8): Remove. > (vmulq_u16): Remove. > (vmulq_n_u16): Remove. > (vmulq_s16): Remove. > (vmulq_n_s16): Remove. > (vmulq_u32): Remove. > (vmulq_n_u32): Remove. > (vmulq_s32): Remove. > (vmulq_n_s32): Remove. > (vmulq_n_f16): Remove. > (vmulq_f16): Remove. > (vmulq_n_f32): Remove. > (vmulq_f32): Remove. > (vmulq_m_n_s8): Remove. > (vmulq_m_n_s32): Remove. > (vmulq_m_n_s16): Remove. > (vmulq_m_n_u8): Remove. > (vmulq_m_n_u32): Remove. > (vmulq_m_n_u16): Remove. > (vmulq_m_s8): Remove. > (vmulq_m_s32): Remove. > (vmulq_m_s16): Remove. > (vmulq_m_u8): Remove. > (vmulq_m_u32): Remove. > (vmulq_m_u16): Remove. > (vmulq_m_f32): Remove. > (vmulq_m_f16): Remove. > (vmulq_m_n_f32): Remove. > (vmulq_m_n_f16): Remove. > (vmulq_x_s8): Remove. > (vmulq_x_s16): Remove. > (vmulq_x_s32): Remove. > (vmulq_x_n_s8): Remove. > (vmulq_x_n_s16): Remove. > (vmulq_x_n_s32): Remove. > (vmulq_x_u8): Remove. > (vmulq_x_u16): Remove. > (vmulq_x_u32): Remove. > (vmulq_x_n_u8): Remove. > (vmulq_x_n_u16): Remove. > (vmulq_x_n_u32): Remove. > (vmulq_x_f16): Remove. > (vmulq_x_f32): Remove. > (vmulq_x_n_f16): Remove. > (vmulq_x_n_f32): Remove. > (__arm_vmulq_u8): Remove. > (__arm_vmulq_n_u8): Remove. > (__arm_vmulq_s8): Remove. > (__arm_vmulq_n_s8): Remove. > (__arm_vmulq_u16): Remove. > (__arm_vmulq_n_u16): Remove. > (__arm_vmulq_s16): Remove. > (__arm_vmulq_n_s16): Remove. > (__arm_vmulq_u32): Remove. > (__arm_vmulq_n_u32): Remove. > (__arm_vmulq_s32): Remove. > (__arm_vmulq_n_s32): Remove. > (__arm_vmulq_m_n_s8): Remove. > (__arm_vmulq_m_n_s32): Remove. > (__arm_vmulq_m_n_s16): Remove. > (__arm_vmulq_m_n_u8): Remove. > (__arm_vmulq_m_n_u32): Remove. > (__arm_vmulq_m_n_u16): Remove. > (__arm_vmulq_m_s8): Remove. > (__arm_vmulq_m_s32): Remove. > (__arm_vmulq_m_s16): Remove. > (__arm_vmulq_m_u8): Remove. > (__arm_vmulq_m_u32): Remove. > (__arm_vmulq_m_u16): Remove. > (__arm_vmulq_x_s8): Remove. > (__arm_vmulq_x_s16): Remove. > (__arm_vmulq_x_s32): Remove. > (__arm_vmulq_x_n_s8): Remove. > (__arm_vmulq_x_n_s16): Remove. > (__arm_vmulq_x_n_s32): Remove. > (__arm_vmulq_x_u8): Remove. > (__arm_vmulq_x_u16): Remove. > (__arm_vmulq_x_u32): Remove. > (__arm_vmulq_x_n_u8): Remove. > (__arm_vmulq_x_n_u16): Remove. > (__arm_vmulq_x_n_u32): Remove. > (__arm_vmulq_n_f16): Remove. > (__arm_vmulq_f16): Remove. > (__arm_vmulq_n_f32): Remove. > (__arm_vmulq_f32): Remove. > (__arm_vmulq_m_f32): Remove. > (__arm_vmulq_m_f16): Remove. > (__arm_vmulq_m_n_f32): Remove. > (__arm_vmulq_m_n_f16): Remove. > (__arm_vmulq_x_f16): Remove. > (__arm_vmulq_x_f32): Remove. > (__arm_vmulq_x_n_f16): Remove. > (__arm_vmulq_x_n_f32): Remove. > (__arm_vmulq): Remove. > (__arm_vmulq_m): Remove. > (__arm_vmulq_x): Remove. > (vsubq): Remove. > (vsubq_m): Remove. > (vsubq_x): Remove. > (vsubq_n_f16): Remove. > (vsubq_n_f32): Remove. > (vsubq_u8): Remove. > (vsubq_n_u8): Remove. > (vsubq_s8): Remove. > (vsubq_n_s8): Remove. > (vsubq_u16): Remove. > (vsubq_n_u16): Remove. > (vsubq_s16): Remove. > (vsubq_n_s16): Remove. > (vsubq_u32): Remove. > (vsubq_n_u32): Remove. > (vsubq_s32): Remove. > (vsubq_n_s32): Remove. > (vsubq_f16): Remove. > (vsubq_f32): Remove. > (vsubq_m_s8): Remove. > (vsubq_m_u8): Remove. > (vsubq_m_s16): Remove. > (vsubq_m_u16): Remove. > (vsubq_m_s32): Remove. > (vsubq_m_u32): Remove. > (vsubq_m_n_s8): Remove. > (vsubq_m_n_s32): Remove. > (vsubq_m_n_s16): Remove. > (vsubq_m_n_u8): Remove. > (vsubq_m_n_u32): Remove. > (vsubq_m_n_u16): Remove. > (vsubq_m_f32): Remove. > (vsubq_m_f16): Remove. > (vsubq_m_n_f32): Remove. > (vsubq_m_n_f16): Remove. > (vsubq_x_s8): Remove. > (vsubq_x_s16): Remove. > (vsubq_x_s32): Remove. > (vsubq_x_n_s8): Remove. > (vsubq_x_n_s16): Remove. > (vsubq_x_n_s32): Remove. > (vsubq_x_u8): Remove. > (vsubq_x_u16): Remove. > (vsubq_x_u32): Remove. > (vsubq_x_n_u8): Remove. > (vsubq_x_n_u16): Remove. > (vsubq_x_n_u32): Remove. > (vsubq_x_f16): Remove. > (vsubq_x_f32): Remove. > (vsubq_x_n_f16): Remove. > (vsubq_x_n_f32): Remove. > (__arm_vsubq_u8): Remove. > (__arm_vsubq_n_u8): Remove. > (__arm_vsubq_s8): Remove. > (__arm_vsubq_n_s8): Remove. > (__arm_vsubq_u16): Remove. > (__arm_vsubq_n_u16): Remove. > (__arm_vsubq_s16): Remove. > (__arm_vsubq_n_s16): Remove. > (__arm_vsubq_u32): Remove. > (__arm_vsubq_n_u32): Remove. > (__arm_vsubq_s32): Remove. > (__arm_vsubq_n_s32): Remove. > (__arm_vsubq_m_s8): Remove. > (__arm_vsubq_m_u8): Remove. > (__arm_vsubq_m_s16): Remove. > (__arm_vsubq_m_u16): Remove. > (__arm_vsubq_m_s32): Remove. > (__arm_vsubq_m_u32): Remove. > (__arm_vsubq_m_n_s8): Remove. > (__arm_vsubq_m_n_s32): Remove. > (__arm_vsubq_m_n_s16): Remove. > (__arm_vsubq_m_n_u8): Remove. > (__arm_vsubq_m_n_u32): Remove. > (__arm_vsubq_m_n_u16): Remove. > (__arm_vsubq_x_s8): Remove. > (__arm_vsubq_x_s16): Remove. > (__arm_vsubq_x_s32): Remove. > (__arm_vsubq_x_n_s8): Remove. > (__arm_vsubq_x_n_s16): Remove. > (__arm_vsubq_x_n_s32): Remove. > (__arm_vsubq_x_u8): Remove. > (__arm_vsubq_x_u16): Remove. > (__arm_vsubq_x_u32): Remove. > (__arm_vsubq_x_n_u8): Remove. > (__arm_vsubq_x_n_u16): Remove. > (__arm_vsubq_x_n_u32): Remove. > (__arm_vsubq_n_f16): Remove. > (__arm_vsubq_n_f32): Remove. > (__arm_vsubq_f16): Remove. > (__arm_vsubq_f32): Remove. > (__arm_vsubq_m_f32): Remove. > (__arm_vsubq_m_f16): Remove. > (__arm_vsubq_m_n_f32): Remove. > (__arm_vsubq_m_n_f16): Remove. > (__arm_vsubq_x_f16): Remove. > (__arm_vsubq_x_f32): Remove. > (__arm_vsubq_x_n_f16): Remove. > (__arm_vsubq_x_n_f32): Remove. > (__arm_vsubq): Remove. > (__arm_vsubq_m): Remove. > (__arm_vsubq_x): Remove. > * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f): > Remove. > (vmulq_u, vmulq_s, vmulq_f): Remove. > * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove. > (mve_vmulq_<supf><mode>): Remove. [snip] > diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md > index 5167fbc6add..ccb3cf23304 100644 > --- a/gcc/config/arm/mve.md > +++ b/gcc/config/arm/mve.md > @@ -1353,18 +1353,6 @@ (define_insn "mve_vmulltq_int_<supf><mode>" > ;; [vmulq_u, vmulq_s]) > ;; [vsubq_s, vsubq_u]) > ;; > -(define_insn "mve_vmulq_<supf><mode>" > - [ > - (set (match_operand:MVE_2 0 "s_register_operand" "=w") > - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > "w") > - (match_operand:MVE_2 2 "s_register_operand" "w")] > - VMULQ)) > - ] > - "TARGET_HAVE_MVE" > - "vmul.i%#<V_sz_elem>\t%q0, %q1, %q2" > - [(set_attr "type" "mve_move") > -]) > - > (define_insn "mve_<mve_addsubmul>q<mode>" > [ > (set (match_operand:MVE_2 0 "s_register_operand" "=w") > @@ -1742,21 +1730,6 @@ (define_insn "mve_vshlq_r_<supf><mode>" > [(set_attr "type" "mve_move") > ]) > > -;; > -;; [vsubq_s, vsubq_u]) > -;; > -(define_insn "mve_vsubq_<supf><mode>" > - [ > - (set (match_operand:MVE_2 0 "s_register_operand" "=w") > - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > "w") > - (match_operand:MVE_2 2 "s_register_operand" "w")] > - VSUBQ)) > - ] > - "TARGET_HAVE_MVE" > - "vsub.i%#<V_sz_elem>\t%q0, %q1, %q2" > - [(set_attr "type" "mve_move") > -]) > - Just to make sure I understand correctly, are these patterns being removed because the new builtins are wired through the factored patterns in patch [07/22]? If so, ok. Thanks, Kyrill > ;; > ;; [vabdq_f]) > ;; > -- > 2.34.1
RE: [PATCH 08/22] arm: [MVE intrinsics] rework vaddq vmulq vsubq
Kyrylo Tkachov via Gcc-patches Tue, 02 May 2023 09:31:39 -0700
- RE: [PATCH 13/22] arm: [MVE intrinsic... Kyrylo Tkachov via Gcc-patches
- [PATCH 11/22] arm: [MVE intrinsics] rework... Christophe Lyon via Gcc-patches
- RE: [PATCH 11/22] arm: [MVE intrinsic... Kyrylo Tkachov via Gcc-patches
- [PATCH 12/22] arm: [MVE intrinsics] add bi... Christophe Lyon via Gcc-patches
- RE: [PATCH 12/22] arm: [MVE intrinsic... Kyrylo Tkachov via Gcc-patches
- [PATCH 18/22] arm: [MVE intrinsics] factor... Christophe Lyon via Gcc-patches
- RE: [PATCH 18/22] arm: [MVE intrinsic... Kyrylo Tkachov via Gcc-patches
- RE: [PATCH 00/22] arm: New framework for M... Kyrylo Tkachov via Gcc-patches
- Re: [PATCH 00/22] arm: New framework ... Christophe Lyon via Gcc-patches
- Re: [PATCH 00/22] arm: New framew... Christophe Lyon via Gcc-patches
- RE: [PATCH 08/22] arm: [MVE intrinsics] re... Kyrylo Tkachov via Gcc-patches
- Re: [PATCH 08/22] arm: [MVE intrinsic... Christophe Lyon via Gcc-patches