From: Christophe Lyon Date: Tue, 10 Jan 2023 16:15:00 +0000 (+0000) Subject: arm: [MVE intrinsics] factorize vcreateq X-Git-Tag: basepoints/gcc-15~9691 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd04568f4ed39ce4c6d402729762ffbcc0340a8a;p=thirdparty%2Fgcc.git arm: [MVE intrinsics] factorize vcreateq We need a 'fake' iterator to be able to use mve_insn for vcreateq_f. 2022-09-08 Christophe Lyon gcc/ * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New. (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F. * config/arm/mve.md (mve_vcreateq_f): Rename into ... (@mve_q_f): ... this. (mve_vcreateq_): Rename into ... (@mve_q_): ... this. --- diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md index b0ea1af77d2e..aa2ee98ec78d 100644 --- a/gcc/config/arm/iterators.md +++ b/gcc/config/arm/iterators.md @@ -393,6 +393,10 @@ VSUBQ_N_F ]) +(define_int_iterator MVE_FP_CREATE_ONLY [ + VCREATEQ_F + ]) + (define_code_attr mve_addsubmul [ (minus "vsub") (mult "vmul") @@ -407,6 +411,7 @@ (VBICQ_M_N_S "vbic") (VBICQ_M_N_U "vbic") (VBICQ_M_S "vbic") (VBICQ_M_U "vbic") (VBICQ_M_F "vbic") (VBICQ_N_S "vbic") (VBICQ_N_U "vbic") + (VCREATEQ_S "vcreate") (VCREATEQ_U "vcreate") (VCREATEQ_F "vcreate") (VEORQ_M_S "veor") (VEORQ_M_U "veor") (VEORQ_M_F "veor") (VMULQ_M_N_S "vmul") (VMULQ_M_N_U "vmul") (VMULQ_M_N_F "vmul") (VMULQ_M_S "vmul") (VMULQ_M_U "vmul") (VMULQ_M_F "vmul") diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md index 4eacd4b10049..8592e4ad7924 100644 --- a/gcc/config/arm/mve.md +++ b/gcc/config/arm/mve.md @@ -700,12 +700,12 @@ ;; [vcreateq_f]) ;; -(define_insn "mve_vcreateq_f" +(define_insn "@mve_q_f" [ (set (match_operand:MVE_0 0 "s_register_operand" "=w") (unspec:MVE_0 [(match_operand:DI 1 "s_register_operand" "r") (match_operand:DI 2 "s_register_operand" "r")] - VCREATEQ_F)) + MVE_FP_CREATE_ONLY)) ] "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" "vmov %q0[2], %q0[0], %Q1, %Q2\;vmov %q0[3], %q0[1], %R1, %R2" @@ -715,7 +715,7 @@ ;; ;; [vcreateq_u, vcreateq_s]) ;; -(define_insn "mve_vcreateq_" +(define_insn "@mve_q_" [ (set (match_operand:MVE_1 0 "s_register_operand" "=w") (unspec:MVE_1 [(match_operand:DI 1 "s_register_operand" "r")