[gcc r17-2944] aarch64: Replace `UNSPEC_NONE` with optional arguments where possible
Karl Meakin via Gcc-cvs <[email protected]> Tue, 4 Aug 2026 14:24:43 +0000 (GMT)
| Newsgroups | gmane.comp.gcc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://gcc.gnu.org/g:9df54ce692af4251421dc333cb31f506fab15045 commit r17-2944-g9df54ce692af4251421dc333cb31f506fab15045 Author: Karl Meakin <[email protected]> Date: Wed Dec 10 16:25:21 2025 +0000 aarch64: Replace `UNSPEC_NONE` with optional arguments where possible Instead of passing `UNSPEC_NONE` to constructors or to `map_to_unspec`, make the arguments default to `UNSPEC_NONE` if not specified. gcc/ChangeLog: * config/aarch64/aarch64-acle-builtins.h (map_to_rtx_codes): Make arguments default to `UNSPEC_NONE`. (map_to_unspecs): Likewise. * config/aarch64/aarch64-sve-builtins-functions.h (unspec_based_function_base): Make arguments default to `UNSPEC_NONE`. (sme_1mode_function): Likewise. (integer_conversion): Likewise. (reduction): Likewise. * config/aarch64/aarch64-sve-builtins-base.cc (svbic_impl): Delete unnecessary `UNSPEC_NONE` arguments. (svcmla_impl): Likewise. (svnot_impl): Likewise. (svsub_impl): Likewise. * config/aarch64/aarch64-sve-builtins-sme.cc (svadd_write_za): Likewise. (svaddha_za): Likewise. (svbmopa_za): Likewise. (svbmops_za): Likewise. (svsudot_lane_za): Likewise. (svsuvdot_lane_za): Likewise. (svsumopa_za): Likewise. (svsumops_za): Likewise. (svusdot_za): Likewise. (svusdot_lane_za): Likewise. (svusbdot_lane_za): Likewise. (svusmopa_za): Likewise. (svusmops_za): Likewise. * config/aarch64/aarch64-sve-builtins-sve2.cc (svqcadd_impl): Likewise. (svqrshl_impl): Likewise. (svqshl_impl): Likewise. (svrshl_impl): Likewise. (svuqadd_impl): Likewise. Diff: --- gcc/config/aarch64/aarch64-acle-builtins.h | 6 +- gcc/config/aarch64/aarch64-sve-builtins-base.cc | 32 +-- .../aarch64/aarch64-sve-builtins-functions.h | 31 +-- gcc/config/aarch64/aarch64-sve-builtins-sme.cc | 32 ++- gcc/config/aarch64/aarch64-sve-builtins-sve2.cc | 236 ++++++++++----------- 5 files changed, 161 insertions(+), 176 deletions(-) diff --git a/gcc/config/aarch64/aarch64-acle-builtins.h b/gcc/config/aarch64/aarch64-acle-builtins.h index eedea9d4d7d6..6314ec5d312a 100644 --- a/gcc/config/aarch64/aarch64-acle-builtins.h +++ b/gcc/config/aarch64/aarch64-acle-builtins.h @@ -730,9 +730,11 @@ public: rtx use_contiguous_prefetch_insn (insn_code); rtx use_contiguous_store_insn (insn_code); - rtx map_to_rtx_codes (rtx_code, rtx_code, unspec, unspec, + rtx map_to_rtx_codes (rtx_code, rtx_code, unspec = UNSPEC_NONE, + unspec = UNSPEC_NONE, unsigned int = DEFAULT_MERGE_ARGNO); - rtx map_to_unspecs (unspec, unspec, unspec, unsigned int = DEFAULT_MERGE_ARGNO); + rtx map_to_unspecs (unspec, unspec = UNSPEC_NONE, unspec = UNSPEC_NONE, + unsigned int = DEFAULT_MERGE_ARGNO); /* The function call expression. */ tree call_expr; diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc index 2696f04509d6..5d01d875a9da 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc @@ -308,7 +308,7 @@ public: { machine_mode mode = GET_MODE_INNER (e.vector_mode (0)); e.args[2] = simplify_unary_operation (NOT, mode, e.args[2], mode); - return e.map_to_rtx_codes (AND, AND, UNSPEC_NONE, UNSPEC_NONE); + return e.map_to_rtx_codes (AND, AND); } if (e.type_suffix_ids[0] == TYPE_SUFFIX_b) @@ -424,7 +424,7 @@ public: else { unspec cmla = unspec_cmla (rot); - return e.map_to_unspecs (cmla, cmla, UNSPEC_NONE); + return e.map_to_unspecs (cmla, cmla); } } }; @@ -2484,7 +2484,7 @@ public: class svnot_impl : public rtx_code_function { public: - constexpr svnot_impl () : rtx_code_function (NOT, NOT, UNSPEC_NONE) {} + constexpr svnot_impl () : rtx_code_function (NOT, NOT) {} rtx expand (function_expander &e) const override @@ -3252,7 +3252,7 @@ public: /* Canonicalize subtractions of constants to additions. */ machine_mode mode = e.vector_mode (0); if (e.try_negating_argument (2, mode)) - return e.map_to_rtx_codes (PLUS, PLUS, UNSPEC_COND_FADD, UNSPEC_NONE); + return e.map_to_rtx_codes (PLUS, PLUS, UNSPEC_COND_FADD); return rtx_code_function::expand (e); } @@ -3558,7 +3558,7 @@ FUNCTION (svand, rtx_code_function, (AND, AND)) FUNCTION (svandv, svandv_impl,) FUNCTION (svasr, rtx_code_function, (ASHIFTRT, ASHIFTRT)) FUNCTION (svasr_wide, shift_wide, (ASHIFTRT, UNSPEC_ASHIFTRT_WIDE)) -FUNCTION (svasrd, unspec_based_function, (UNSPEC_ASRD, UNSPEC_NONE, UNSPEC_NONE)) +FUNCTION (svasrd, unspec_based_function, (UNSPEC_ASRD)) FUNCTION (svbfdot, fixed_insn_function, (CODE_FOR_aarch64_sve_bfdotvnx4sf)) FUNCTION (svbfdot_lane, fixed_insn_function, (CODE_FOR_aarch64_sve_bfdot_lanevnx4sf)) @@ -3627,7 +3627,7 @@ FUNCTION (svdup, svdup_impl,) FUNCTION (svdup_lane, svdup_lane_impl,) FUNCTION (svdupq, svdupq_impl,) FUNCTION (svdupq_lane, svdupq_lane_impl,) -FUNCTION (sveor, rtx_code_function, (XOR, XOR, UNSPEC_NONE)) +FUNCTION (sveor, rtx_code_function, (XOR, XOR)) FUNCTION (sveorv, sveorv_impl,) FUNCTION (svexpa, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_FEXPA)) FUNCTION (svexpand, svexpand_impl,) @@ -3711,7 +3711,7 @@ FUNCTION (svmsb, svmsb_impl,) FUNCTION (svmul, svmul_impl,) FUNCTION (svmul_lane, CODE_FOR_MODE0 (aarch64_mul_lane),) FUNCTION (svmulh, unspec_based_function, (UNSPEC_SMUL_HIGHPART, - UNSPEC_UMUL_HIGHPART, UNSPEC_NONE)) + UNSPEC_UMUL_HIGHPART)) FUNCTION (svmulx, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_COND_FMULX)) FUNCTION (svnand, svnand_impl,) FUNCTION (svneg, quiet<rtx_code_function>, (NEG, NEG, UNSPEC_COND_FNEG)) @@ -3740,7 +3740,7 @@ FUNCTION (svptest_first, svptest_impl, (LT)) FUNCTION (svptest_last, svptest_impl, (LTU)) FUNCTION (svptrue, svptrue_impl,) FUNCTION (svptrue_pat, svptrue_pat_impl,) -FUNCTION (svqadd, rtx_code_function, (SS_PLUS, US_PLUS, UNSPEC_NONE)) +FUNCTION (svqadd, rtx_code_function, (SS_PLUS, US_PLUS)) FUNCTION (svqdecb, svqdec_bhwd_impl, (QImode)) FUNCTION (svqdecb_pat, svqdec_bhwd_impl, (QImode)) FUNCTION (svqdecd, svqdec_bhwd_impl, (DImode)) @@ -3759,17 +3759,17 @@ FUNCTION (svqinch_pat, svqinc_bhwd_impl, (HImode)) FUNCTION (svqincp, svqdecp_svqincp_impl, (SS_PLUS, US_PLUS)) FUNCTION (svqincw, svqinc_bhwd_impl, (SImode)) FUNCTION (svqincw_pat, svqinc_bhwd_impl, (SImode)) -FUNCTION (svqsub, rtx_code_function, (SS_MINUS, US_MINUS, UNSPEC_NONE)) -FUNCTION (svrbit, rtx_code_function, (BITREVERSE, BITREVERSE, UNSPEC_NONE)) +FUNCTION (svqsub, rtx_code_function, (SS_MINUS, US_MINUS)) +FUNCTION (svrbit, rtx_code_function, (BITREVERSE, BITREVERSE)) FUNCTION (svrdffr, svrdffr_impl,) FUNCTION (svrecpe, unspec_based_function, (UNSPEC_NONE, UNSPEC_URECPE, UNSPEC_FRECPE)) FUNCTION (svrecps, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_FRECPS)) FUNCTION (svrecpx, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_COND_FRECPX)) FUNCTION (svreinterpret, svreinterpret_impl,) FUNCTION (svrev, svrev_impl,) -FUNCTION (svrevb, unspec_based_function, (UNSPEC_REVB, UNSPEC_REVB, UNSPEC_NONE)) -FUNCTION (svrevh, unspec_based_function, (UNSPEC_REVH, UNSPEC_REVH, UNSPEC_NONE)) -FUNCTION (svrevw, unspec_based_function, (UNSPEC_REVW, UNSPEC_REVW, UNSPEC_NONE)) +FUNCTION (svrevb, unspec_based_function, (UNSPEC_REVB, UNSPEC_REVB)) +FUNCTION (svrevh, unspec_based_function, (UNSPEC_REVH, UNSPEC_REVH)) +FUNCTION (svrevw, unspec_based_function, (UNSPEC_REVW, UNSPEC_REVW)) FUNCTION (svrinta, svrint_impl, (round_optab, UNSPEC_COND_FRINTA)) FUNCTION (svrinti, svrint_impl, (nearbyint_optab, UNSPEC_COND_FRINTI)) FUNCTION (svrintm, svrint_impl, (floor_optab, UNSPEC_COND_FRINTM)) @@ -3802,7 +3802,7 @@ FUNCTION (svstnt1, svstnt1_impl,) FUNCTION (svsub, svsub_impl,) FUNCTION (svsubr, rtx_code_function_rotated, (MINUS, MINUS, UNSPEC_COND_FSUB)) FUNCTION (svsudot, svusdot_impl, (true)) -FUNCTION (svsudot_lane, svdotprod_lane_impl, (UNSPEC_SUDOT, UNSPEC_NONE, UNSPEC_NONE)) +FUNCTION (svsudot_lane, svdotprod_lane_impl, (UNSPEC_SUDOT)) FUNCTION (svtbl, quiet<unspec_based_uncond_function>, (UNSPEC_TBL, UNSPEC_TBL, UNSPEC_TBL)) FUNCTION (svtmad, CODE_FOR_MODE0 (aarch64_sve_tmad),) @@ -3821,8 +3821,8 @@ FUNCTION (svundef4, svundef_impl, (4)) FUNCTION (svunpkhi, svunpk_impl, (true)) FUNCTION (svunpklo, svunpk_impl, (false)) FUNCTION (svusdot, svusdot_impl, (false)) -FUNCTION (svusdot_lane, svdotprod_lane_impl, (UNSPEC_USDOT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svusmmla, unspec_based_add_function, (UNSPEC_USMATMUL, UNSPEC_NONE, UNSPEC_NONE)) +FUNCTION (svusdot_lane, svdotprod_lane_impl, (UNSPEC_USDOT)) +FUNCTION (svusmmla, unspec_based_add_function, (UNSPEC_USMATMUL)) FUNCTION (svuzp1, svuzp_impl, (0)) FUNCTION (svuzp1q, unspec_based_function, (UNSPEC_UZP1Q, UNSPEC_UZP1Q, UNSPEC_UZP1Q)) diff --git a/gcc/config/aarch64/aarch64-sve-builtins-functions.h b/gcc/config/aarch64/aarch64-sve-builtins-functions.h index 2fdb2fd62f2d..072c0bf2c89d 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins-functions.h +++ b/gcc/config/aarch64/aarch64-sve-builtins-functions.h @@ -268,8 +268,8 @@ class unspec_based_function_base : public function_base { public: constexpr unspec_based_function_base (unspec unspec_for_sint, - unspec unspec_for_uint, - unspec unspec_for_fp, + unspec unspec_for_uint = UNSPEC_NONE, + unspec unspec_for_fp = UNSPEC_NONE, unspec unspec_for_mfp8 = UNSPEC_NONE, unsigned int suffix_index = 0) : m_unspec_for_sint (unspec_for_sint), @@ -431,8 +431,9 @@ class sme_1mode_function : public read_write_za<unspec_based_function_base> public: using parent = read_write_za<unspec_based_function_base>; - constexpr sme_1mode_function (unspec unspec_for_sint, unspec unspec_for_uint, - unspec unspec_for_fp) + constexpr sme_1mode_function (unspec unspec_for_sint, + unspec unspec_for_uint = UNSPEC_NONE, + unspec unspec_for_fp = UNSPEC_NONE) : parent (unspec_for_sint, unspec_for_uint, unspec_for_fp, UNSPEC_NONE, 1) {} @@ -461,10 +462,11 @@ class sme_2mode_function_t : public read_write_za<unspec_based_function_base> public: using parent = read_write_za<unspec_based_function_base>; - constexpr sme_2mode_function_t (unspec unspec_for_sint, unspec unspec_for_uint, - unspec unspec_for_fp, unspec unspec_for_mfp8 = UNSPEC_NONE) - : parent (unspec_for_sint, unspec_for_uint, unspec_for_fp, unspec_for_mfp8, - 1) + constexpr sme_2mode_function_t (unspec unspec_for_sint, + unspec unspec_for_uint = UNSPEC_NONE, + unspec unspec_for_fp = UNSPEC_NONE, + unspec unspec_for_mfp8 = UNSPEC_NONE) + : parent (unspec_for_sint, unspec_for_uint, unspec_for_fp, unspec_for_mfp8, 1) {} rtx @@ -693,8 +695,10 @@ public: class integer_conversion : public function_base { public: - constexpr integer_conversion (unspec unspec_for_sint, unspec unspec_for_sintu, - unspec unspec_for_uint, unspec unspec_for_uints) + constexpr integer_conversion (unspec unspec_for_sint, + unspec unspec_for_sintu = UNSPEC_NONE, + unspec unspec_for_uint = UNSPEC_NONE, + unspec unspec_for_uints = UNSPEC_NONE) : m_unspec_for_sint (unspec_for_sint), m_unspec_for_sintu (unspec_for_sintu), m_unspec_for_uint (unspec_for_uint), @@ -741,8 +745,9 @@ public: m_unspec_for_fp (unspec) {} - constexpr reduction (unspec unspec_for_sint, unspec unspec_for_uint, - unspec unspec_for_fp) + constexpr reduction (unspec unspec_for_sint, + unspec unspec_for_uint, + unspec unspec_for_fp = UNSPEC_NONE) : m_unspec_for_sint (unspec_for_sint), m_unspec_for_uint (unspec_for_uint), m_unspec_for_fp (unspec_for_fp) @@ -789,7 +794,7 @@ public: if (aarch64_simd_shift_imm_p (shift, elem_mode, m_code == ASHIFT)) { e.args.last () = shift; - return e.map_to_rtx_codes (m_code, m_code, UNSPEC_NONE, UNSPEC_NONE); + return e.map_to_rtx_codes (m_code, m_code); } if (e.pred == PRED_x) diff --git a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc index 65972f6559e8..f2def0fb8374 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc @@ -616,13 +616,13 @@ FUNCTION (arm_in_streaming_mode, arm_in_streaming_mode_impl, ) FUNCTION (svadd_za, sme_1mode_function, (UNSPEC_SME_ADD, UNSPEC_SME_ADD, UNSPEC_SME_FADD)) FUNCTION (svadd_write_za, sme_1mode_function, (UNSPEC_SME_ADD_WRITE, - UNSPEC_SME_ADD_WRITE, UNSPEC_NONE)) + UNSPEC_SME_ADD_WRITE)) FUNCTION (svaddha_za, sme_1mode_function, (UNSPEC_SME_ADDHA, - UNSPEC_SME_ADDHA, UNSPEC_NONE)) + UNSPEC_SME_ADDHA)) FUNCTION (svaddva_za, sme_1mode_function, (UNSPEC_SME_ADDVA, - UNSPEC_SME_ADDVA, UNSPEC_NONE)) -FUNCTION (svbmopa_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_BMOPA, UNSPEC_NONE)) -FUNCTION (svbmops_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_BMOPS, UNSPEC_NONE)) + UNSPEC_SME_ADDVA)) +FUNCTION (svbmopa_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_BMOPA)) +FUNCTION (svbmops_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_BMOPS)) FUNCTION (svcntsb, svcnts_bhwd_impl, (VNx16QImode)) FUNCTION (svcntsd, svcnts_bhwd_impl, (VNx2DImode)) FUNCTION (svcntsh, svcnts_bhwd_impl, (VNx8HImode)) @@ -669,20 +669,18 @@ FUNCTION (svstr_zt, svstr_zt_impl, ) FUNCTION (svsub_za, sme_1mode_function, (UNSPEC_SME_SUB, UNSPEC_SME_SUB, UNSPEC_SME_FSUB)) FUNCTION (svsub_write_za, sme_1mode_function, (UNSPEC_SME_SUB_WRITE, - UNSPEC_SME_SUB_WRITE, UNSPEC_NONE)) + UNSPEC_SME_SUB_WRITE)) FUNCTION (svsudot_za, svsudot_za_impl,) -FUNCTION (svsudot_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SUDOT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svsuvdot_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SUVDOT, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svsumopa_za, sme_2mode_function, (UNSPEC_SME_SUMOPA, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svsumops_za, sme_2mode_function, (UNSPEC_SME_SUMOPS, UNSPEC_NONE, UNSPEC_NONE)) +FUNCTION (svsudot_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SUDOT)) +FUNCTION (svsuvdot_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SUVDOT)) +FUNCTION (svsumopa_za, sme_2mode_function, (UNSPEC_SME_SUMOPA)) +FUNCTION (svsumops_za, sme_2mode_function, (UNSPEC_SME_SUMOPS)) FUNCTION (svundef_za, svundef_za_impl, ) -FUNCTION (svusdot_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_USDOT, UNSPEC_NONE)) -FUNCTION (svusdot_lane_za, sme_2mode_lane_function, (UNSPEC_NONE, UNSPEC_SME_USDOT, UNSPEC_NONE)) -FUNCTION (svusvdot_lane_za, sme_2mode_lane_function, (UNSPEC_NONE, UNSPEC_SME_USVDOT, - UNSPEC_NONE)) -FUNCTION (svusmopa_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_USMOPA, UNSPEC_NONE)) -FUNCTION (svusmops_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_USMOPS, UNSPEC_NONE)) +FUNCTION (svusdot_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_USDOT)) +FUNCTION (svusdot_lane_za, sme_2mode_lane_function, (UNSPEC_NONE, UNSPEC_SME_USDOT)) +FUNCTION (svusvdot_lane_za, sme_2mode_lane_function, (UNSPEC_NONE, UNSPEC_SME_USVDOT)) +FUNCTION (svusmopa_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_USMOPA)) +FUNCTION (svusmops_za, sme_2mode_function, (UNSPEC_NONE, UNSPEC_SME_USMOPS)) FUNCTION (svvdot_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SVDOT, UNSPEC_SME_UVDOT, UNSPEC_SME_FVDOT, diff --git a/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc b/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc index 9ee56fded10e..738ef201324f 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc @@ -583,9 +583,9 @@ public: /* Convert the rotation amount into a specific unspec. */ int rot = INTVAL (e.args.pop ()); if (rot == 90) - return e.map_to_unspecs (UNSPEC_SQCADD90, UNSPEC_NONE, UNSPEC_NONE); + return e.map_to_unspecs (UNSPEC_SQCADD90); if (rot == 270) - return e.map_to_unspecs (UNSPEC_SQCADD270, UNSPEC_NONE, UNSPEC_NONE); + return e.map_to_unspecs (UNSPEC_SQCADD270); gcc_unreachable (); } }; @@ -620,7 +620,7 @@ class svqrshl_impl : public unspec_based_function { public: constexpr svqrshl_impl () - : unspec_based_function (UNSPEC_SQRSHL, UNSPEC_UQRSHL, UNSPEC_NONE) {} + : unspec_based_function (UNSPEC_SQRSHL, UNSPEC_UQRSHL) {} gimple * fold (gimple_folder &f) const override @@ -656,7 +656,7 @@ class svqshl_impl : public unspec_based_function { public: constexpr svqshl_impl () - : unspec_based_function (UNSPEC_SQSHL, UNSPEC_UQSHL, UNSPEC_NONE) {} + : unspec_based_function (UNSPEC_SQSHL, UNSPEC_UQSHL) {} gimple * fold (gimple_folder &f) const override @@ -693,7 +693,7 @@ class svrshl_impl : public unspec_based_function { public: constexpr svrshl_impl () - : unspec_based_function (UNSPEC_SRSHL, UNSPEC_URSHL, UNSPEC_NONE) {} + : unspec_based_function (UNSPEC_SRSHL, UNSPEC_URSHL) {} gimple * fold (gimple_folder &f) const override @@ -743,8 +743,8 @@ public: machine_mode mode = e.vector_mode (0); if (e.pred == PRED_x && aarch64_sve_sqadd_sqsub_immediate_p (mode, e.args[2], false)) - return e.map_to_rtx_codes (UNKNOWN, US_PLUS, UNSPEC_NONE, UNSPEC_NONE); - return e.map_to_unspecs (UNSPEC_NONE, UNSPEC_USQADD, UNSPEC_NONE); + return e.map_to_rtx_codes (UNKNOWN, US_PLUS); + return e.map_to_unspecs (UNSPEC_NONE, UNSPEC_USQADD); } }; @@ -916,7 +916,7 @@ public: if (e.pred == PRED_x && aarch64_sve_arith_immediate_p (mode, e.args[2], false)) return e.use_unpred_insn (code_for_aarch64_sve_suqadd_const (mode)); - return e.map_to_unspecs (UNSPEC_SUQADD, UNSPEC_NONE, UNSPEC_NONE); + return e.map_to_unspecs (UNSPEC_SUQADD); } }; @@ -1052,42 +1052,40 @@ public: namespace aarch64_acle { FUNCTION (svaba, svaba_impl,) -FUNCTION (svabalb, unspec_based_add_function, (UNSPEC_SABDLB, - UNSPEC_UABDLB, UNSPEC_NONE)) -FUNCTION (svabalt, unspec_based_add_function, (UNSPEC_SABDLT, - UNSPEC_UABDLT, UNSPEC_NONE)) -FUNCTION (svabdlb, unspec_based_function, (UNSPEC_SABDLB, UNSPEC_UABDLB, UNSPEC_NONE)) -FUNCTION (svabdlt, unspec_based_function, (UNSPEC_SABDLT, UNSPEC_UABDLT, UNSPEC_NONE)) -FUNCTION (svadalp, unspec_based_function, (UNSPEC_SADALP, UNSPEC_UADALP, UNSPEC_NONE)) -FUNCTION (svadclb, unspec_based_function, (UNSPEC_NONE, UNSPEC_ADCLB, UNSPEC_NONE)) -FUNCTION (svadclt, unspec_based_function, (UNSPEC_NONE, UNSPEC_ADCLT, UNSPEC_NONE)) -FUNCTION (svaddhnb, unspec_based_function, (UNSPEC_ADDHNB, UNSPEC_ADDHNB, UNSPEC_NONE)) -FUNCTION (svaddhnt, unspec_based_function, (UNSPEC_ADDHNT, UNSPEC_ADDHNT, UNSPEC_NONE)) -FUNCTION (svaddlb, unspec_based_function, (UNSPEC_SADDLB, UNSPEC_UADDLB, UNSPEC_NONE)) -FUNCTION (svaddlbt, unspec_based_function, (UNSPEC_SADDLBT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svaddlt, unspec_based_function, (UNSPEC_SADDLT, UNSPEC_UADDLT, UNSPEC_NONE)) +FUNCTION (svabalb, unspec_based_add_function, (UNSPEC_SABDLB, UNSPEC_UABDLB)) +FUNCTION (svabalt, unspec_based_add_function, (UNSPEC_SABDLT, UNSPEC_UABDLT)) +FUNCTION (svabdlb, unspec_based_function, (UNSPEC_SABDLB, UNSPEC_UABDLB)) +FUNCTION (svabdlt, unspec_based_function, (UNSPEC_SABDLT, UNSPEC_UABDLT)) +FUNCTION (svadalp, unspec_based_function, (UNSPEC_SADALP, UNSPEC_UADALP)) +FUNCTION (svadclb, unspec_based_function, (UNSPEC_NONE, UNSPEC_ADCLB)) +FUNCTION (svadclt, unspec_based_function, (UNSPEC_NONE, UNSPEC_ADCLT)) +FUNCTION (svaddhnb, unspec_based_function, (UNSPEC_ADDHNB, UNSPEC_ADDHNB)) +FUNCTION (svaddhnt, unspec_based_function, (UNSPEC_ADDHNT, UNSPEC_ADDHNT)) +FUNCTION (svaddlb, unspec_based_function, (UNSPEC_SADDLB, UNSPEC_UADDLB)) +FUNCTION (svaddlbt, unspec_based_function, (UNSPEC_SADDLBT)) +FUNCTION (svaddlt, unspec_based_function, (UNSPEC_SADDLT, UNSPEC_UADDLT)) FUNCTION (svaddp, unspec_based_pred_function, (UNSPEC_ADDP, UNSPEC_ADDP, UNSPEC_FADDP)) FUNCTION (svaddqv, reduction, (UNSPEC_ADDQV, UNSPEC_ADDQV, UNSPEC_FADDQV)) -FUNCTION (svaddwb, unspec_based_function, (UNSPEC_SADDWB, UNSPEC_UADDWB, UNSPEC_NONE)) -FUNCTION (svaddwt, unspec_based_function, (UNSPEC_SADDWT, UNSPEC_UADDWT, UNSPEC_NONE)) +FUNCTION (svaddwb, unspec_based_function, (UNSPEC_SADDWB, UNSPEC_UADDWB)) +FUNCTION (svaddwt, unspec_based_function, (UNSPEC_SADDWT, UNSPEC_UADDWT)) FUNCTION (svaesd, fixed_insn_function, (CODE_FOR_aarch64_sve2_aesd)) FUNCTION (svaese, fixed_insn_function, (CODE_FOR_aarch64_sve2_aese)) FUNCTION (svaesimc, fixed_insn_function, (CODE_FOR_aarch64_sve2_aesimc)) FUNCTION (svaesmc, fixed_insn_function, (CODE_FOR_aarch64_sve2_aesmc)) FUNCTION (svamax, faminmaximpl, (UNSPEC_COND_FAMAX, UNSPEC_FAMAX)) FUNCTION (svamin, faminmaximpl, (UNSPEC_COND_FAMIN, UNSPEC_FAMIN)) -FUNCTION (svandqv, reduction, (UNSPEC_ANDQV, UNSPEC_ANDQV, UNSPEC_NONE)) +FUNCTION (svandqv, reduction, (UNSPEC_ANDQV, UNSPEC_ANDQV)) FUNCTION (svbcax, CODE_FOR_MODE0 (aarch64_sve2_bcax),) -FUNCTION (svbdep, unspec_based_function, (UNSPEC_BDEP, UNSPEC_BDEP, UNSPEC_NONE)) -FUNCTION (svbext, unspec_based_function, (UNSPEC_BEXT, UNSPEC_BEXT, UNSPEC_NONE)) +FUNCTION (svbdep, unspec_based_function, (UNSPEC_BDEP, UNSPEC_BDEP)) +FUNCTION (svbext, unspec_based_function, (UNSPEC_BEXT, UNSPEC_BEXT)) FUNCTION (svbfmlslb, fixed_insn_function, (CODE_FOR_aarch64_sve_bfmlslbvnx4sf)) FUNCTION (svbfmlslb_lane, fixed_insn_function, (CODE_FOR_aarch64_sve_bfmlslb_lanevnx4sf)) FUNCTION (svbfmlslt, fixed_insn_function, (CODE_FOR_aarch64_sve_bfmlsltvnx4sf)) FUNCTION (svbfmlslt_lane, fixed_insn_function, (CODE_FOR_aarch64_sve_bfmlslt_lanevnx4sf)) -FUNCTION (svbgrp, unspec_based_function, (UNSPEC_BGRP, UNSPEC_BGRP, UNSPEC_NONE)) +FUNCTION (svbgrp, unspec_based_function, (UNSPEC_BGRP, UNSPEC_BGRP)) FUNCTION (svbsl, CODE_FOR_MODE0 (aarch64_sve2_bsl),) FUNCTION (svbsl1n, CODE_FOR_MODE0 (aarch64_sve2_bsl1n),) FUNCTION (svbsl2n, CODE_FOR_MODE0 (aarch64_sve2_bsl2n),) @@ -1110,17 +1108,16 @@ FUNCTION (svcvtt, svcvtt_impl,) FUNCTION (svcvtb, svcvtb_impl,) FUNCTION (svdup_laneq, svdup_laneq_impl,) FUNCTION (sveor3, CODE_FOR_MODE0 (aarch64_sve2_eor3),) -FUNCTION (sveorbt, unspec_based_function, (UNSPEC_EORBT, UNSPEC_EORBT, UNSPEC_NONE)) -FUNCTION (sveorqv, reduction, (UNSPEC_EORQV, UNSPEC_EORQV, UNSPEC_NONE)) -FUNCTION (sveortb, unspec_based_function, (UNSPEC_EORTB, UNSPEC_EORTB, UNSPEC_NONE)) +FUNCTION (sveorbt, unspec_based_function, (UNSPEC_EORBT, UNSPEC_EORBT)) +FUNCTION (sveorqv, reduction, (UNSPEC_EORQV, UNSPEC_EORQV)) +FUNCTION (sveortb, unspec_based_function, (UNSPEC_EORTB, UNSPEC_EORTB)) FUNCTION (svextq, svextq_impl,) FUNCTION (svfirstp, svfirst_lastp_impl, (true)) -FUNCTION (svhadd, unspec_based_function, (UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_NONE)) -FUNCTION (svhsub, unspec_based_function, (UNSPEC_SHSUB, UNSPEC_UHSUB, UNSPEC_NONE)) +FUNCTION (svhadd, unspec_based_function, (UNSPEC_SHADD, UNSPEC_UHADD)) +FUNCTION (svhsub, unspec_based_function, (UNSPEC_SHSUB, UNSPEC_UHSUB)) FUNCTION (svhistcnt, CODE_FOR_MODE0 (aarch64_sve2_histcnt),) FUNCTION (svhistseg, CODE_FOR_MODE0 (aarch64_sve2_histseg),) -FUNCTION (svhsubr, unspec_based_function_rotated, (UNSPEC_SHSUB, - UNSPEC_UHSUB, UNSPEC_NONE)) +FUNCTION (svhsubr, unspec_based_function_rotated, (UNSPEC_SHSUB, UNSPEC_UHSUB)) FUNCTION (svlastp, svfirst_lastp_impl, (false)) FUNCTION (svld1q_gather, svld1q_gather_impl,) FUNCTION (svld1udq, svld1uxq_impl, (VNx1DImode)) @@ -1185,125 +1182,108 @@ FUNCTION (svmlslt, unspec_based_mls_function, (UNSPEC_SMULLT, FUNCTION (svmlslt_lane, unspec_based_mls_lane_function, (UNSPEC_SMULLT, UNSPEC_UMULLT, UNSPEC_FMLSLT)) -FUNCTION (svmovlb, svmovl_lb_impl, (UNSPEC_SSHLLB, UNSPEC_USHLLB, UNSPEC_NONE)) -FUNCTION (svmovlt, svmovl_lb_impl, (UNSPEC_SSHLLT, UNSPEC_USHLLT, UNSPEC_NONE)) -FUNCTION (svmullb, unspec_based_function, (UNSPEC_SMULLB, UNSPEC_UMULLB, UNSPEC_NONE)) +FUNCTION (svmovlb, svmovl_lb_impl, (UNSPEC_SSHLLB, UNSPEC_USHLLB)) +FUNCTION (svmovlt, svmovl_lb_impl, (UNSPEC_SSHLLT, UNSPEC_USHLLT)) +FUNCTION (svmullb, unspec_based_function, (UNSPEC_SMULLB, UNSPEC_UMULLB)) FUNCTION (svmullb_lane, unspec_based_lane_function, (UNSPEC_SMULLB, - UNSPEC_UMULLB, UNSPEC_NONE)) -FUNCTION (svmullt, unspec_based_function, (UNSPEC_SMULLT, UNSPEC_UMULLT, UNSPEC_NONE)) + UNSPEC_UMULLB)) +FUNCTION (svmullt, unspec_based_function, (UNSPEC_SMULLT, UNSPEC_UMULLT)) FUNCTION (svmullt_lane, unspec_based_lane_function, (UNSPEC_SMULLT, - UNSPEC_UMULLT, UNSPEC_NONE)) + UNSPEC_UMULLT)) FUNCTION (svnbsl, CODE_FOR_MODE0 (aarch64_sve2_nbsl),) FUNCTION (svnmatch, svmatch_svnmatch_impl, (UNSPEC_NMATCH)) -FUNCTION (svorqv, reduction, (UNSPEC_ORQV, UNSPEC_ORQV, UNSPEC_NONE)) +FUNCTION (svorqv, reduction, (UNSPEC_ORQV, UNSPEC_ORQV)) FUNCTION (svpext_lane, svpext_lane_impl,) FUNCTION (svpmov, svpmov_impl,) FUNCTION (svpmov_lane, svpmov_lane_impl,) FUNCTION (svpmul, CODE_FOR_MODE0 (aarch64_sve2_pmul),) -FUNCTION (svpmullb, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLB, UNSPEC_NONE)) -FUNCTION (svpmullb_pair, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLB_PAIR, UNSPEC_NONE)) -FUNCTION (svpmullt, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLT, UNSPEC_NONE)) -FUNCTION (svpmullt_pair, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLT_PAIR, UNSPEC_NONE)) +FUNCTION (svpmullb, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLB)) +FUNCTION (svpmullb_pair, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLB_PAIR)) +FUNCTION (svpmullt, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLT)) +FUNCTION (svpmullt_pair, unspec_based_function, (UNSPEC_NONE, UNSPEC_PMULLT_PAIR)) FUNCTION (svpsel_lane, svpsel_lane_impl,) -FUNCTION (svqabs, rtx_code_function, (SS_ABS, UNKNOWN, UNSPEC_NONE)) +FUNCTION (svqabs, rtx_code_function, (SS_ABS, UNKNOWN)) FUNCTION (svqcadd, svqcadd_impl,) FUNCTION (svqcvt, integer_conversion, (UNSPEC_SQCVT, UNSPEC_SQCVTU, - UNSPEC_UQCVT, UNSPEC_NONE)) + UNSPEC_UQCVT)) FUNCTION (svqcvtn, integer_conversion, (UNSPEC_SQCVTN, UNSPEC_SQCVTUN, - UNSPEC_UQCVTN, UNSPEC_NONE)) -FUNCTION (svqdmlalb, unspec_based_qadd_function, (UNSPEC_SQDMULLB, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlalb_lane, unspec_based_qadd_lane_function, (UNSPEC_SQDMULLB, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlalbt, unspec_based_qadd_function, (UNSPEC_SQDMULLBT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlalt, unspec_based_qadd_function, (UNSPEC_SQDMULLT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlalt_lane, unspec_based_qadd_lane_function, (UNSPEC_SQDMULLT, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlslb, unspec_based_qsub_function, (UNSPEC_SQDMULLB, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlslb_lane, unspec_based_qsub_lane_function, (UNSPEC_SQDMULLB, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlslbt, unspec_based_qsub_function, (UNSPEC_SQDMULLBT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlslt, unspec_based_qsub_function, (UNSPEC_SQDMULLT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmlslt_lane, unspec_based_qsub_lane_function, (UNSPEC_SQDMULLT, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmulh, unspec_based_function, (UNSPEC_SQDMULH, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmulh_lane, unspec_based_lane_function, (UNSPEC_SQDMULH, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmullb, unspec_based_function, (UNSPEC_SQDMULLB, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmullb_lane, unspec_based_lane_function, (UNSPEC_SQDMULLB, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmullt, unspec_based_function, (UNSPEC_SQDMULLT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqdmullt_lane, unspec_based_lane_function, (UNSPEC_SQDMULLT, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqneg, rtx_code_function, (SS_NEG, UNKNOWN, UNSPEC_NONE)) + UNSPEC_UQCVTN)) +FUNCTION (svqdmlalb, unspec_based_qadd_function, (UNSPEC_SQDMULLB)) +FUNCTION (svqdmlalb_lane, unspec_based_qadd_lane_function, (UNSPEC_SQDMULLB)) +FUNCTION (svqdmlalbt, unspec_based_qadd_function, (UNSPEC_SQDMULLBT)) +FUNCTION (svqdmlalt, unspec_based_qadd_function, (UNSPEC_SQDMULLT)) +FUNCTION (svqdmlalt_lane, unspec_based_qadd_lane_function, (UNSPEC_SQDMULLT)) +FUNCTION (svqdmlslb, unspec_based_qsub_function, (UNSPEC_SQDMULLB)) +FUNCTION (svqdmlslb_lane, unspec_based_qsub_lane_function, (UNSPEC_SQDMULLB)) +FUNCTION (svqdmlslbt, unspec_based_qsub_function, (UNSPEC_SQDMULLBT)) +FUNCTION (svqdmlslt, unspec_based_qsub_function, (UNSPEC_SQDMULLT)) +FUNCTION (svqdmlslt_lane, unspec_based_qsub_lane_function, (UNSPEC_SQDMULLT)) +FUNCTION (svqdmulh, unspec_based_function, (UNSPEC_SQDMULH)) +FUNCTION (svqdmulh_lane, unspec_based_lane_function, (UNSPEC_SQDMULH)) +FUNCTION (svqdmullb, unspec_based_function, (UNSPEC_SQDMULLB)) +FUNCTION (svqdmullb_lane, unspec_based_lane_function, (UNSPEC_SQDMULLB)) +FUNCTION (svqdmullt, unspec_based_function, (UNSPEC_SQDMULLT)) +FUNCTION (svqdmullt_lane, unspec_based_lane_function, (UNSPEC_SQDMULLT)) +FUNCTION (svqneg, rtx_code_function, (SS_NEG, UNKNOWN)) FUNCTION (svqrdcmlah, svqrdcmlah_impl,) FUNCTION (svqrdcmlah_lane, svqrdcmlah_lane_impl,) -FUNCTION (svqrdmlah, unspec_based_function, (UNSPEC_SQRDMLAH, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqrdmlah_lane, unspec_based_lane_function, (UNSPEC_SQRDMLAH, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqrdmlsh, unspec_based_function, (UNSPEC_SQRDMLSH, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqrdmlsh_lane, unspec_based_lane_function, (UNSPEC_SQRDMLSH, - UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqrdmulh, unspec_based_function, (UNSPEC_SQRDMULH, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqrdmulh_lane, unspec_based_lane_function, (UNSPEC_SQRDMULH, - UNSPEC_NONE, UNSPEC_NONE)) +FUNCTION (svqrdmlah, unspec_based_function, (UNSPEC_SQRDMLAH)) +FUNCTION (svqrdmlah_lane, unspec_based_lane_function, (UNSPEC_SQRDMLAH)) +FUNCTION (svqrdmlsh, unspec_based_function, (UNSPEC_SQRDMLSH)) +FUNCTION (svqrdmlsh_lane, unspec_based_lane_function, (UNSPEC_SQRDMLSH)) +FUNCTION (svqrdmulh, unspec_based_function, (UNSPEC_SQRDMULH)) +FUNCTION (svqrdmulh_lane, unspec_based_lane_function, (UNSPEC_SQRDMULH)) FUNCTION (svqrshl, svqrshl_impl,) FUNCTION (svqrshr, unspec_based_uncond_function, (UNSPEC_SQRSHR, UNSPEC_UQRSHR, UNSPEC_NONE, UNSPEC_NONE, 1)) FUNCTION (svqrshrn, unspec_based_uncond_function, (UNSPEC_SQRSHRN, UNSPEC_UQRSHRN, UNSPEC_NONE, UNSPEC_NONE, 1)) -FUNCTION (svqrshrnb, unspec_based_function, (UNSPEC_SQRSHRNB, - UNSPEC_UQRSHRNB, UNSPEC_NONE)) -FUNCTION (svqrshrnt, unspec_based_function, (UNSPEC_SQRSHRNT, - UNSPEC_UQRSHRNT, UNSPEC_NONE)) +FUNCTION (svqrshrnb, unspec_based_function, (UNSPEC_SQRSHRNB, UNSPEC_UQRSHRNB)) +FUNCTION (svqrshrnt, unspec_based_function, (UNSPEC_SQRSHRNT, UNSPEC_UQRSHRNT)) FUNCTION (svqrshru, unspec_based_uncond_function, (UNSPEC_SQRSHRU, UNSPEC_NONE, UNSPEC_NONE, UNSPEC_NONE, 1)) FUNCTION (svqrshrun, unspec_based_uncond_function, (UNSPEC_SQRSHRUN, UNSPEC_NONE, UNSPEC_NONE, UNSPEC_NONE, 1)) -FUNCTION (svqrshrunb, unspec_based_function, (UNSPEC_SQRSHRUNB, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqrshrunt, unspec_based_function, (UNSPEC_SQRSHRUNT, UNSPEC_NONE, UNSPEC_NONE)) +FUNCTION (svqrshrunb, unspec_based_function, (UNSPEC_SQRSHRUNB)) +FUNCTION (svqrshrunt, unspec_based_function, (UNSPEC_SQRSHRUNT)) FUNCTION (svqshl, svqshl_impl,) -FUNCTION (svqshlu, unspec_based_function, (UNSPEC_SQSHLU, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqshrnb, unspec_based_function, (UNSPEC_SQSHRNB, - UNSPEC_UQSHRNB, UNSPEC_NONE)) -FUNCTION (svqshrnt, unspec_based_function, (UNSPEC_SQSHRNT, - UNSPEC_UQSHRNT, UNSPEC_NONE)) -FUNCTION (svqshrunb, unspec_based_function, (UNSPEC_SQSHRUNB, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqshrunt, unspec_based_function, (UNSPEC_SQSHRUNT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqsubr, rtx_code_function_rotated, (SS_MINUS, US_MINUS, UNSPEC_NONE)) -FUNCTION (svqxtnb, unspec_based_function, (UNSPEC_SQXTNB, UNSPEC_UQXTNB, UNSPEC_NONE)) -FUNCTION (svqxtnt, unspec_based_function, (UNSPEC_SQXTNT, UNSPEC_UQXTNT, UNSPEC_NONE)) -FUNCTION (svqxtunb, unspec_based_function, (UNSPEC_SQXTUNB, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svqxtunt, unspec_based_function, (UNSPEC_SQXTUNT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svraddhnb, unspec_based_function, (UNSPEC_RADDHNB, - UNSPEC_RADDHNB, UNSPEC_NONE)) -FUNCTION (svraddhnt, unspec_based_function, (UNSPEC_RADDHNT, - UNSPEC_RADDHNT, UNSPEC_NONE)) +FUNCTION (svqshlu, unspec_based_function, (UNSPEC_SQSHLU)) +FUNCTION (svqshrnb, unspec_based_function, (UNSPEC_SQSHRNB, UNSPEC_UQSHRNB)) +FUNCTION (svqshrnt, unspec_based_function, (UNSPEC_SQSHRNT, UNSPEC_UQSHRNT)) +FUNCTION (svqshrunb, unspec_based_function, (UNSPEC_SQSHRUNB)) +FUNCTION (svqshrunt, unspec_based_function, (UNSPEC_SQSHRUNT)) +FUNCTION (svqsubr, rtx_code_function_rotated, (SS_MINUS, US_MINUS)) +FUNCTION (svqxtnb, unspec_based_function, (UNSPEC_SQXTNB, UNSPEC_UQXTNB)) +FUNCTION (svqxtnt, unspec_based_function, (UNSPEC_SQXTNT, UNSPEC_UQXTNT)) +FUNCTION (svqxtunb, unspec_based_function, (UNSPEC_SQXTUNB)) +FUNCTION (svqxtunt, unspec_based_function, (UNSPEC_SQXTUNT)) +FUNCTION (svraddhnb, unspec_based_function, (UNSPEC_RADDHNB, UNSPEC_RADDHNB)) +FUNCTION (svraddhnt, unspec_based_function, (UNSPEC_RADDHNT, UNSPEC_RADDHNT)) FUNCTION (svrax1, fixed_insn_function, (CODE_FOR_aarch64_sve2_rax1)) FUNCTION (svrevd, unspec_based_function, (UNSPEC_REVD, UNSPEC_REVD, UNSPEC_REVD)) -FUNCTION (svrhadd, unspec_based_function, (UNSPEC_SRHADD, UNSPEC_URHADD, UNSPEC_NONE)) +FUNCTION (svrhadd, unspec_based_function, (UNSPEC_SRHADD, UNSPEC_URHADD)) FUNCTION (svrint32x, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_FRINT32X)) FUNCTION (svrint32z, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_FRINT32Z)) FUNCTION (svrint64x, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_FRINT64X)) FUNCTION (svrint64z, unspec_based_function, (UNSPEC_NONE, UNSPEC_NONE, UNSPEC_FRINT64Z)) FUNCTION (svrshl, svrshl_impl,) -FUNCTION (svrshr, unspec_based_function, (UNSPEC_SRSHR, UNSPEC_URSHR, UNSPEC_NONE)) -FUNCTION (svrshrnb, unspec_based_function, (UNSPEC_RSHRNB, UNSPEC_RSHRNB, UNSPEC_NONE)) -FUNCTION (svrshrnt, unspec_based_function, (UNSPEC_RSHRNT, UNSPEC_RSHRNT, UNSPEC_NONE)) -FUNCTION (svrsra, unspec_based_add_function, (UNSPEC_SRSHR, UNSPEC_URSHR, UNSPEC_NONE)) -FUNCTION (svrsubhnb, unspec_based_function, (UNSPEC_RSUBHNB, - UNSPEC_RSUBHNB, UNSPEC_NONE)) -FUNCTION (svrsubhnt, unspec_based_function, (UNSPEC_RSUBHNT, - UNSPEC_RSUBHNT, UNSPEC_NONE)) -FUNCTION (svsbclb, unspec_based_function, (UNSPEC_NONE, UNSPEC_SBCLB, UNSPEC_NONE)) -FUNCTION (svsbclt, unspec_based_function, (UNSPEC_NONE, UNSPEC_SBCLT, UNSPEC_NONE)) -FUNCTION (svshllb, unspec_based_function, (UNSPEC_SSHLLB, UNSPEC_USHLLB, UNSPEC_NONE)) -FUNCTION (svshllt, unspec_based_function, (UNSPEC_SSHLLT, UNSPEC_USHLLT, UNSPEC_NONE)) -FUNCTION (svshrnb, unspec_based_function, (UNSPEC_SHRNB, UNSPEC_SHRNB, UNSPEC_NONE)) -FUNCTION (svshrnt, unspec_based_function, (UNSPEC_SHRNT, UNSPEC_SHRNT, UNSPEC_NONE)) -FUNCTION (svsli, unspec_based_function, (UNSPEC_SLI, UNSPEC_SLI, UNSPEC_NONE)) +FUNCTION (svrshr, unspec_based_function, (UNSPEC_SRSHR, UNSPEC_URSHR)) +FUNCTION (svrshrnb, unspec_based_function, (UNSPEC_RSHRNB, UNSPEC_RSHRNB)) +FUNCTION (svrshrnt, unspec_based_function, (UNSPEC_RSHRNT, UNSPEC_RSHRNT)) +FUNCTION (svrsra, unspec_based_add_function, (UNSPEC_SRSHR, UNSPEC_URSHR)) +FUNCTION (svrsubhnb, unspec_based_function, (UNSPEC_RSUBHNB, UNSPEC_RSUBHNB)) +FUNCTION (svrsubhnt, unspec_based_function, (UNSPEC_RSUBHNT, UNSPEC_RSUBHNT)) +FUNCTION (svsbclb, unspec_based_function, (UNSPEC_NONE, UNSPEC_SBCLB)) +FUNCTION (svsbclt, unspec_based_function, (UNSPEC_NONE, UNSPEC_SBCLT)) +FUNCTION (svshllb, unspec_based_function, (UNSPEC_SSHLLB, UNSPEC_USHLLB)) +FUNCTION (svshllt, unspec_based_function, (UNSPEC_SSHLLT, UNSPEC_USHLLT)) +FUNCTION (svshrnb, unspec_based_function, (UNSPEC_SHRNB, UNSPEC_SHRNB)) +FUNCTION (svshrnt, unspec_based_function, (UNSPEC_SHRNT, UNSPEC_SHRNT)) +FUNCTION (svsli, unspec_based_function, (UNSPEC_SLI, UNSPEC_SLI)) FUNCTION (svsm4e, fixed_insn_function, (CODE_FOR_aarch64_sve2_sm4e)) FUNCTION (svsm4ekey, fixed_insn_function, (CODE_FOR_aarch64_sve2_sm4ekey)) FUNCTION (svsqadd, svsqadd_impl,) FUNCTION (svsra, svsra_impl,) -FUNCTION (svsri, unspec_based_function, (UNSPEC_SRI, UNSPEC_SRI, UNSPEC_NONE)) +FUNCTION (svsri, unspec_based_function, (UNSPEC_SRI, UNSPEC_SRI)) FUNCTION (svst1dq, svst1xq_impl, (VNx1DImode)) FUNCTION (svst1q_scatter, svst1q_scatter_impl,) FUNCTION (svst1wq, svst1xq_impl, (VNx1SImode)) @@ -1314,14 +1294,14 @@ FUNCTION (svstnt1_scatter, svstnt1_scatter_impl,) FUNCTION (svstnt1b_scatter, svstnt1_scatter_truncate_impl, (QImode)) FUNCTION (svstnt1h_scatter, svstnt1_scatter_truncate_impl, (HImode)) FUNCTION (svstnt1w_scatter, svstnt1_scatter_truncate_impl, (SImode)) -FUNCTION (svsubhnb, unspec_based_function, (UNSPEC_SUBHNB, UNSPEC_SUBHNB, UNSPEC_NONE)) -FUNCTION (svsubhnt, unspec_based_function, (UNSPEC_SUBHNT, UNSPEC_SUBHNT, UNSPEC_NONE)) -FUNCTION (svsublb, unspec_based_function, (UNSPEC_SSUBLB, UNSPEC_USUBLB, UNSPEC_NONE)) -FUNCTION (svsublbt, unspec_based_function, (UNSPEC_SSUBLBT, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svsublt, unspec_based_function, (UNSPEC_SSUBLT, UNSPEC_USUBLT, UNSPEC_NONE)) -FUNCTION (svsubltb, unspec_based_function, (UNSPEC_SSUBLTB, UNSPEC_NONE, UNSPEC_NONE)) -FUNCTION (svsubwb, unspec_based_function, (UNSPEC_SSUBWB, UNSPEC_USUBWB, UNSPEC_NONE)) -FUNCTION (svsubwt, unspec_based_function, (UNSPEC_SSUBWT, UNSPEC_USUBWT, UNSPEC_NONE)) +FUNCTION (svsubhnb, unspec_based_function, (UNSPEC_SUBHNB, UNSPEC_SUBHNB)) +FUNCTION (svsubhnt, unspec_based_function, (UNSPEC_SUBHNT, UNSPEC_SUBHNT)) +FUNCTION (svsublb, unspec_based_function, (UNSPEC_SSUBLB, UNSPEC_USUBLB)) +FUNCTION (svsublbt, unspec_based_function, (UNSPEC_SSUBLBT)) +FUNCTION (svsublt, unspec_based_function, (UNSPEC_SSUBLT, UNSPEC_USUBLT)) +FUNCTION (svsubltb, unspec_based_function, (UNSPEC_SSUBLTB)) +FUNCTION (svsubwb, unspec_based_function, (UNSPEC_SSUBWB, UNSPEC_USUBWB)) +FUNCTION (svsubwt, unspec_based_function, (UNSPEC_SSUBWT, UNSPEC_USUBWT)) FUNCTION (svtbl2, svtbl2_impl,) FUNCTION (svtblq, quiet<unspec_based_uncond_function>, (UNSPEC_TBLQ, UNSPEC_TBLQ,