/* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics) Copyright (C) 2020-2025 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2, 0) DEF_SVE_FUNCTION (svaba, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (svabalb, ternary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svabalt, ternary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svabdlb, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svabdlt, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svadalp, binary_wide, hsd_integer, mxz) DEF_SVE_FUNCTION (svadclb, ternary_opt_n, sd_unsigned, none) DEF_SVE_FUNCTION (svadclt, ternary_opt_n, sd_unsigned, none) DEF_SVE_FUNCTION (svaddhnb, binary_narrowb_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svaddhnt, binary_narrowt_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svaddlb, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svaddlbt, binary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svaddlt, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svaddp, binary, all_arith, mx) DEF_SVE_FUNCTION (svaddwb, binary_wide_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svaddwt, binary_wide_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svbcax, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (svbsl, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (svbsl1n, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (svbsl2n, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (svcadd, binary_rotate, all_integer, none) DEF_SVE_FUNCTION (svcdot, ternary_qq_rotate, sd_signed, none) DEF_SVE_FUNCTION (svcdot_lane, ternary_qq_lane_rotate, sd_signed, none) DEF_SVE_FUNCTION (svcmla, ternary_rotate, all_integer, none) DEF_SVE_FUNCTION (svcmla_lane, ternary_lane_rotate, hs_integer, none) DEF_SVE_FUNCTION (svcvtlt, unary_convert, cvt_long, mx) DEF_SVE_FUNCTION (svcvtnt, unary_convert_narrowt, cvt_narrow, mx) DEF_SVE_FUNCTION (svcvtx, unary_convert, cvt_narrow_s, mxz) DEF_SVE_FUNCTION (svcvtxnt, unary_convert_narrowt, cvt_narrow_s, mx) DEF_SVE_FUNCTION (sveor3, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (sveorbt, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (sveortb, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (svhadd, binary_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svhsub, binary_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svhsubr, binary_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svlogb, unary_to_int, all_float, mxz) DEF_SVE_FUNCTION (svmaxnmp, binary, all_float, mx) DEF_SVE_FUNCTION (svmaxp, binary, all_arith, mx) DEF_SVE_FUNCTION (svminnmp, binary, all_float, mx) DEF_SVE_FUNCTION (svminp, binary, all_arith, mx) DEF_SVE_FUNCTION (svmla_lane, ternary_lane, hsd_integer, none) DEF_SVE_FUNCTION (svmlalb, ternary_long_opt_n, s_float_hsd_integer, none) DEF_SVE_FUNCTION (svmlalb_lane, ternary_long_lane, s_float_sd_integer, none) DEF_SVE_FUNCTION (svmlalt, ternary_long_opt_n, s_float_hsd_integer, none) DEF_SVE_FUNCTION (svmlalt_lane, ternary_long_lane, s_float_sd_integer, none) DEF_SVE_FUNCTION (svmls_lane, ternary_lane, hsd_integer, none) DEF_SVE_FUNCTION (svmlslb, ternary_long_opt_n, s_float_hsd_integer, none) DEF_SVE_FUNCTION (svmlslb_lane, ternary_long_lane, s_float_sd_integer, none) DEF_SVE_FUNCTION (svmlslt, ternary_long_opt_n, s_float_hsd_integer, none) DEF_SVE_FUNCTION (svmlslt_lane, ternary_long_lane, s_float_sd_integer, none) DEF_SVE_FUNCTION (svmovlb, unary_long, hsd_integer, none) DEF_SVE_FUNCTION (svmovlt, unary_long, hsd_integer, none) DEF_SVE_FUNCTION (svmul_lane, binary_lane, hsd_integer, none) DEF_SVE_FUNCTION (svmullb, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svmullb_lane, binary_long_lane, sd_integer, none) DEF_SVE_FUNCTION (svmullt, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svmullt_lane, binary_long_lane, sd_integer, none) DEF_SVE_FUNCTION (svnbsl, ternary_opt_n, all_integer, none) DEF_SVE_FUNCTION (svpmul, binary_opt_n, b_unsigned, none) DEF_SVE_FUNCTION (svpmullb, binary_long_opt_n, hd_unsigned, none) DEF_SVE_FUNCTION (svpmullb_pair, binary_opt_n, bs_unsigned, none) DEF_SVE_FUNCTION (svpmullt, binary_long_opt_n, hd_unsigned, none) DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, bs_unsigned, none) DEF_SVE_FUNCTION (svqabs, unary, all_signed, mxz) DEF_SVE_FUNCTION (svqadd, binary_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svqcadd, binary_rotate, all_signed, none) DEF_SVE_FUNCTION (svqdmlalb, ternary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmlalb_lane, ternary_long_lane, sd_signed, none) DEF_SVE_FUNCTION (svqdmlalbt, ternary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmlalt, ternary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmlalt_lane, ternary_long_lane, sd_signed, none) DEF_SVE_FUNCTION (svqdmlslb, ternary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmlslb_lane, ternary_long_lane, sd_signed, none) DEF_SVE_FUNCTION (svqdmlslbt, ternary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmlslt, ternary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmlslt_lane, ternary_long_lane, sd_signed, none) DEF_SVE_FUNCTION (svqdmulh, binary_opt_single_n, all_signed, none) DEF_SVE_FUNCTION (svqdmulh_lane, binary_lane, hsd_signed, none) DEF_SVE_FUNCTION (svqdmullb, binary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmullb_lane, binary_long_lane, sd_signed, none) DEF_SVE_FUNCTION (svqdmullt, binary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svqdmullt_lane, binary_long_lane, sd_signed, none) DEF_SVE_FUNCTION (svqneg, unary, all_signed, mxz) DEF_SVE_FUNCTION (svqrdcmlah, ternary_rotate, all_signed, none) DEF_SVE_FUNCTION (svqrdcmlah_lane, ternary_lane_rotate, hs_signed, none) DEF_SVE_FUNCTION (svqrdmlah, ternary_opt_n, all_signed, none) DEF_SVE_FUNCTION (svqrdmlah_lane, ternary_lane, hsd_signed, none) DEF_SVE_FUNCTION (svqrdmlsh, ternary_opt_n, all_signed, none) DEF_SVE_FUNCTION (svqrdmlsh_lane, ternary_lane, hsd_signed, none) DEF_SVE_FUNCTION (svqrdmulh, binary_opt_n, all_signed, none) DEF_SVE_FUNCTION (svqrdmulh_lane, binary_lane, hsd_signed, none) DEF_SVE_FUNCTION (svqrshl, binary_int_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svqrshrnb, shift_right_imm_narrowb, hsd_integer, none) DEF_SVE_FUNCTION (svqrshrnt, shift_right_imm_narrowt, hsd_integer, none) DEF_SVE_FUNCTION (svqrshrunb, shift_right_imm_narrowb_to_uint, hsd_signed, none) DEF_SVE_FUNCTION (svqrshrunt, shift_right_imm_narrowt_to_uint, hsd_signed, none) DEF_SVE_FUNCTION (svqshl, binary_int_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svqshlu, shift_left_imm_to_uint, all_signed, mxz) DEF_SVE_FUNCTION (svqshrnb, shift_right_imm_narrowb, hsd_integer, none) DEF_SVE_FUNCTION (svqshrnt, shift_right_imm_narrowt, hsd_integer, none) DEF_SVE_FUNCTION (svqshrunb, shift_right_imm_narrowb_to_uint, hsd_signed, none) DEF_SVE_FUNCTION (svqshrunt, shift_right_imm_narrowt_to_uint, hsd_signed, none) DEF_SVE_FUNCTION (svqsub, binary_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svqsubr, binary_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svqxtnb, unary_narrowb, hsd_integer, none) DEF_SVE_FUNCTION (svqxtnt, unary_narrowt, hsd_integer, none) DEF_SVE_FUNCTION (svqxtunb, unary_narrowb_to_uint, hsd_signed, none) DEF_SVE_FUNCTION (svqxtunt, unary_narrowt_to_uint, hsd_signed, none) DEF_SVE_FUNCTION (svraddhnb, binary_narrowb_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svraddhnt, binary_narrowt_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svrecpe, unary, s_unsigned, mxz) DEF_SVE_FUNCTION (svrhadd, binary_opt_n, all_integer, mxz) DEF_SVE_FUNCTION (svrshl, binary_int_opt_single_n, all_integer, mxz) DEF_SVE_FUNCTION (svrshr, shift_right_imm, all_integer, mxz) DEF_SVE_FUNCTION (svrshrnb, shift_right_imm_narrowb, hsd_integer, none) DEF_SVE_FUNCTION (svrshrnt, shift_right_imm_narrowt, hsd_integer, none) DEF_SVE_FUNCTION (svrsqrte, unary, s_unsigned, mxz) DEF_SVE_FUNCTION (svrsra, ternary_shift_right_imm, all_integer, none) DEF_SVE_FUNCTION (svrsubhnb, binary_narrowb_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svrsubhnt, binary_narrowt_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svsbclb, ternary_opt_n, sd_unsigned, none) DEF_SVE_FUNCTION (svsbclt, ternary_opt_n, sd_unsigned, none) DEF_SVE_FUNCTION (svshllb, shift_left_imm_long, hsd_integer, none) DEF_SVE_FUNCTION (svshllt, shift_left_imm_long, hsd_integer, none) DEF_SVE_FUNCTION (svshrnb, shift_right_imm_narrowb, hsd_integer, none) DEF_SVE_FUNCTION (svshrnt, shift_right_imm_narrowt, hsd_integer, none) DEF_SVE_FUNCTION (svsli, ternary_shift_left_imm, all_integer, none) DEF_SVE_FUNCTION (svsqadd, binary_int_opt_n, all_unsigned, mxz) DEF_SVE_FUNCTION (svsra, ternary_shift_right_imm, all_integer, none) DEF_SVE_FUNCTION (svsri, ternary_shift_right_imm, all_integer, none) DEF_SVE_FUNCTION (svsubhnb, binary_narrowb_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svsubhnt, binary_narrowt_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svsublb, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svsublbt, binary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svsublt, binary_long_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svsubltb, binary_long_opt_n, hsd_signed, none) DEF_SVE_FUNCTION (svsubwb, binary_wide_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svsubwt, binary_wide_opt_n, hsd_integer, none) DEF_SVE_FUNCTION (svtbl2, tbl_tuple, all_data, none) DEF_SVE_FUNCTION (svtbx, ternary_uint, all_data, none) DEF_SVE_FUNCTION (svuqadd, binary_uint_opt_n, all_signed, mxz) DEF_SVE_FUNCTION (svwhilege, compare_scalar, while, none) DEF_SVE_FUNCTION (svwhilegt, compare_scalar, while, none) DEF_SVE_FUNCTION (svwhilerw, compare_ptr, all_data, none) DEF_SVE_FUNCTION (svwhilewr, compare_ptr, all_data, none) DEF_SVE_FUNCTION (svxar, ternary_shift_right_imm, all_integer, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2) DEF_SVE_FUNCTION (svhistcnt, binary_to_uint, sd_integer, z) DEF_SVE_FUNCTION (svhistseg, binary_to_uint, b_integer, none) DEF_SVE_FUNCTION (svldnt1_gather, load_gather_sv_restricted, sd_data, implicit) DEF_SVE_FUNCTION (svldnt1_gather, load_gather_vs, sd_data, implicit) DEF_SVE_FUNCTION (svldnt1sb_gather, load_ext_gather_offset_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svldnt1sh_gather, load_ext_gather_index_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svldnt1sh_gather, load_ext_gather_offset_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svldnt1sw_gather, load_ext_gather_index_restricted, d_integer, implicit) DEF_SVE_FUNCTION (svldnt1sw_gather, load_ext_gather_offset_restricted, d_integer, implicit) DEF_SVE_FUNCTION (svldnt1ub_gather, load_ext_gather_offset_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svldnt1uh_gather, load_ext_gather_index_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svldnt1uh_gather, load_ext_gather_offset_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svldnt1uw_gather, load_ext_gather_index_restricted, d_integer, implicit) DEF_SVE_FUNCTION (svldnt1uw_gather, load_ext_gather_offset_restricted, d_integer, implicit) DEF_SVE_FUNCTION (svmatch, compare, bh_integer, implicit) DEF_SVE_FUNCTION (svnmatch, compare, bh_integer, implicit) DEF_SVE_FUNCTION (svstnt1_scatter, store_scatter_index_restricted, sd_data, implicit) DEF_SVE_FUNCTION (svstnt1_scatter, store_scatter_offset_restricted, sd_data, implicit) DEF_SVE_FUNCTION (svstnt1b_scatter, store_scatter_offset_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svstnt1h_scatter, store_scatter_index_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svstnt1h_scatter, store_scatter_offset_restricted, sd_integer, implicit) DEF_SVE_FUNCTION (svstnt1w_scatter, store_scatter_index_restricted, d_integer, implicit) DEF_SVE_FUNCTION (svstnt1w_scatter, store_scatter_offset_restricted, d_integer, implicit) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \ | AARCH64_FL_SVE2_AES) DEF_SVE_FUNCTION (svaesd, binary, b_unsigned, none) DEF_SVE_FUNCTION (svaese, binary, b_unsigned, none) DEF_SVE_FUNCTION (svaesimc, unary, b_unsigned, none) DEF_SVE_FUNCTION (svaesmc, unary, b_unsigned, none) DEF_SVE_FUNCTION (svpmullb_pair, binary_opt_n, d_unsigned, none) DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, d_unsigned, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \ | AARCH64_FL_SVE2_BITPERM) DEF_SVE_FUNCTION (svbdep, binary_opt_n, all_unsigned, none) DEF_SVE_FUNCTION (svbext, binary_opt_n, all_unsigned, none) DEF_SVE_FUNCTION (svbgrp, binary_opt_n, all_unsigned, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \ | AARCH64_FL_SVE2_SHA3) DEF_SVE_FUNCTION (svrax1, binary, d_integer, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \ | AARCH64_FL_SVE2_SM4) DEF_SVE_FUNCTION (svsm4e, binary, s_unsigned, none) DEF_SVE_FUNCTION (svsm4ekey, binary, s_unsigned, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2p1) DEF_SVE_FUNCTION (svaddqv, reduction_neonq, all_arith, implicit) DEF_SVE_FUNCTION (svandqv, reduction_neonq, all_integer, implicit) DEF_SVE_FUNCTION (svdup_laneq, unary_lane, all_data, none) DEF_SVE_FUNCTION (sveorqv, reduction_neonq, all_integer, implicit) DEF_SVE_FUNCTION (svextq, extq, all_data, none) DEF_SVE_FUNCTION (svld2q, load, all_data, implicit) DEF_SVE_FUNCTION (svld3q, load, all_data, implicit) DEF_SVE_FUNCTION (svld4q, load, all_data, implicit) DEF_SVE_FUNCTION (svmaxnmqv, reduction_neonq, all_float, implicit) DEF_SVE_FUNCTION (svmaxqv, reduction_neonq, all_arith, implicit) DEF_SVE_FUNCTION (svminnmqv, reduction_neonq, all_float, implicit) DEF_SVE_FUNCTION (svminqv, reduction_neonq, all_arith, implicit) DEF_SVE_FUNCTION (svpmov, pmov_from_vector, all_integer, none) DEF_SVE_FUNCTION (svpmov, inherent, all_integer, z) DEF_SVE_FUNCTION (svpmov_lane, pmov_from_vector_lane, all_integer, none) DEF_SVE_FUNCTION (svpmov_lane, pmov_to_vector_lane, hsd_integer, m) DEF_SVE_FUNCTION (svorqv, reduction_neonq, all_integer, implicit) DEF_SVE_FUNCTION (svst2q, store, all_data, implicit) DEF_SVE_FUNCTION (svst3q, store, all_data, implicit) DEF_SVE_FUNCTION (svst4q, store, all_data, implicit) DEF_SVE_FUNCTION (svtblq, binary_uint, all_data, none) DEF_SVE_FUNCTION (svtbxq, ternary_uint, all_data, none) DEF_SVE_FUNCTION (svuzpq1, binary, all_data, none) DEF_SVE_FUNCTION (svuzpq2, binary, all_data, none) DEF_SVE_FUNCTION (svzipq1, binary, all_data, none) DEF_SVE_FUNCTION (svzipq2, binary, all_data, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2p1, 0) DEF_SVE_FUNCTION (svclamp, clamp, all_integer, none) DEF_SVE_FUNCTION (svpsel_lane, select_pred, all_pred_count, none) DEF_SVE_FUNCTION (svrevd, unary, all_data, mxz) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2p1, AARCH64_FL_SME2) DEF_SVE_FUNCTION (svbfmlslb, ternary_bfloat_opt_n, s_float, none) DEF_SVE_FUNCTION (svbfmlslb_lane, ternary_bfloat_lane, s_float, none) DEF_SVE_FUNCTION (svbfmlslt, ternary_bfloat_opt_n, s_float, none) DEF_SVE_FUNCTION (svbfmlslt_lane, ternary_bfloat_lane, s_float, none) DEF_SVE_FUNCTION (svclamp, clamp, all_float, none) DEF_SVE_FUNCTION (svcntp, count_pred_c, all_count, none) DEF_SVE_FUNCTION (svdot, ternary_qq_opt_n_or_011, s_narrow_fsu, none) DEF_SVE_FUNCTION (svdot_lane, ternary_qq_or_011_lane, s_narrow_fsu, none) DEF_SVE_FUNCTION_GS (svld1, load, all_data, x24, implicit) DEF_SVE_FUNCTION_GS (svldnt1, load, all_data, x24, implicit) DEF_SVE_FUNCTION_GS (svpext_lane, extract_pred, all_count, x12, none) DEF_SVE_FUNCTION (svptrue, inherent, all_count, none) DEF_SVE_FUNCTION_GS (svqcvtn, unary_convertxn, qcvt_x2, x2, none) DEF_SVE_FUNCTION_GS (svqrshrn, shift_right_imm_narrowxn, qrshr_x2, x2, none) DEF_SVE_FUNCTION_GS (svqrshrun, shift_right_imm_narrowxn, qrshru_x2, x2, none) DEF_SVE_FUNCTION_GS (svst1, storexn, all_data, x24, implicit) DEF_SVE_FUNCTION_GS (svstnt1, storexn, all_data, x24, implicit) DEF_SVE_FUNCTION_GS (svwhilege, compare_scalar, while_x, x2, none) DEF_SVE_FUNCTION (svwhilege, compare_scalar_count, while_x_c, none) DEF_SVE_FUNCTION_GS (svwhilegt, compare_scalar, while_x, x2, none) DEF_SVE_FUNCTION (svwhilegt, compare_scalar_count, while_x_c, none) DEF_SVE_FUNCTION_GS (svwhilele, compare_scalar, while_x, x2, none) DEF_SVE_FUNCTION (svwhilele, compare_scalar_count, while_x_c, none) DEF_SVE_FUNCTION_GS (svwhilelt, compare_scalar, while_x, x2, none) DEF_SVE_FUNCTION (svwhilelt, compare_scalar_count, while_x_c, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2p1) DEF_SVE_FUNCTION (svld1q_gather, load_gather64_sv_offset, all_data, implicit) DEF_SVE_FUNCTION (svld1q_gather, load_gather64_sv_index, hsd_data, implicit) DEF_SVE_FUNCTION (svld1q_gather, load_gather64_vs_offset, all_data, implicit) DEF_SVE_FUNCTION (svld1q_gather, load_gather64_vs_index, hsd_data, implicit) DEF_SVE_FUNCTION (svld1udq, load, d_data, implicit) DEF_SVE_FUNCTION (svld1uwq, load, s_data, implicit) DEF_SVE_FUNCTION (svst1dq, store, d_data, implicit) DEF_SVE_FUNCTION (svst1q_scatter, store_scatter64_offset, all_data, implicit) DEF_SVE_FUNCTION (svst1q_scatter, store_scatter64_index, hsd_data, implicit) DEF_SVE_FUNCTION (svst1wq, store, s_data, implicit) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2) DEF_SVE_FUNCTION_GS (svadd, binary_single, all_integer, x24, none) DEF_SVE_FUNCTION_GS (svclamp, clamp, all_arith, x24, none) DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_h_s_float, x2, none) DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_s_s, x24, none) DEF_SVE_FUNCTION_GS (svcvtn, unary_convertxn, cvt_h_s_float, x2, none) DEF_SVE_FUNCTION_GS (svmax, binary_opt_single_n, all_arith, x24, none) DEF_SVE_FUNCTION_GS (svmaxnm, binary_opt_single_n, all_float, x24, none) DEF_SVE_FUNCTION_GS (svmin, binary_opt_single_n, all_arith, x24, none) DEF_SVE_FUNCTION_GS (svminnm, binary_opt_single_n, all_float, x24, none) DEF_SVE_FUNCTION_GS (svqcvt, unary_convertxn, qcvt_x2, x2, none) DEF_SVE_FUNCTION_GS (svqcvt, unary_convertxn, qcvt_x4, x4, none) DEF_SVE_FUNCTION_GS (svqcvtn, unary_convertxn, qcvt_x4, x4, none) DEF_SVE_FUNCTION_GS (svqdmulh, binary_opt_single_n, all_signed, x24, none) DEF_SVE_FUNCTION_GS (svqrshr, shift_right_imm_narrowxn, qrshr_x2, x2, none) DEF_SVE_FUNCTION_GS (svqrshr, shift_right_imm_narrowxn, qrshr_x4, x4, none) DEF_SVE_FUNCTION_GS (svqrshrn, shift_right_imm_narrowxn, qrshr_x4, x4, none) DEF_SVE_FUNCTION_GS (svqrshru, shift_right_imm_narrowxn, qrshru_x2, x2, none) DEF_SVE_FUNCTION_GS (svqrshru, shift_right_imm_narrowxn, qrshru_x4, x4, none) DEF_SVE_FUNCTION_GS (svqrshrun, shift_right_imm_narrowxn, qrshru_x4, x4, none) DEF_SVE_FUNCTION_GS (svrinta, unaryxn, s_float, x24, none) DEF_SVE_FUNCTION_GS (svrintm, unaryxn, s_float, x24, none) DEF_SVE_FUNCTION_GS (svrintn, unaryxn, s_float, x24, none) DEF_SVE_FUNCTION_GS (svrintp, unaryxn, s_float, x24, none) DEF_SVE_FUNCTION_GS (svrshl, binary_int_opt_single_n, all_integer, x24, none) DEF_SVE_FUNCTION_GS (svsel, binaryxn, all_data, x24, implicit) DEF_SVE_FUNCTION_GS (svunpk, unary_convertxn, bhs_widen, x24, none) DEF_SVE_FUNCTION_GS (svuzp, unaryxn, all_data, x24, none) DEF_SVE_FUNCTION_GS (svuzpq, unaryxn, all_data, x24, none) DEF_SVE_FUNCTION_GS (svzip, unaryxn, all_data, x24, none) DEF_SVE_FUNCTION_GS (svzipq, unaryxn, all_data, x24, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_FAMINMAX, \ AARCH64_FL_SME2 | AARCH64_FL_FAMINMAX) DEF_SVE_FUNCTION (svamax, binary_opt_single_n, all_float, mxz) DEF_SVE_FUNCTION (svamin, binary_opt_single_n, all_float, mxz) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_LUT, \ AARCH64_FL_SME2 | AARCH64_FL_LUT) DEF_SVE_FUNCTION (svluti2_lane, luti2, bh_data, none) DEF_SVE_FUNCTION (svluti4_lane, luti4, bh_data, none) DEF_SVE_FUNCTION_GS (svluti4_lane, luti4, h_data, x2, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME_F16F16) DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_f32_f16, x2, none) DEF_SVE_FUNCTION_GS (svcvtl, unary_convertxn, cvt_f32_f16, x2, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_SVE_B16B16, \ AARCH64_FL_SME2 | AARCH64_FL_SVE_B16B16) DEF_SVE_FUNCTION (svadd, binary_opt_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svclamp, clamp, h_bfloat, none) DEF_SVE_FUNCTION (svmax, binary_opt_single_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svmaxnm, binary_opt_single_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svmla, ternary_opt_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svmla_lane, ternary_lane, h_bfloat, none) DEF_SVE_FUNCTION (svmls, ternary_opt_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svmls_lane, ternary_lane, h_bfloat, none) DEF_SVE_FUNCTION (svmin, binary_opt_single_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svminnm, binary_opt_single_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svmul, binary_opt_n, h_bfloat, mxz) DEF_SVE_FUNCTION (svmul_lane, binary_lane, h_bfloat, none) DEF_SVE_FUNCTION (svsub, binary_opt_n, h_bfloat, mxz) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ streaming_only (AARCH64_FL_SME2 | AARCH64_FL_SVE_B16B16) DEF_SVE_FUNCTION_GS (svclamp, clamp, h_bfloat, x24, none) DEF_SVE_FUNCTION_GS (svmax, binary_opt_single_n, h_bfloat, x24, none) DEF_SVE_FUNCTION_GS (svmaxnm, binary_opt_single_n, h_bfloat, x24, none) DEF_SVE_FUNCTION_GS (svmin, binary_opt_single_n, h_bfloat, x24, none) DEF_SVE_FUNCTION_GS (svminnm, binary_opt_single_n, h_bfloat, x24, none) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_FP8, \ AARCH64_FL_SME2 | AARCH64_FL_FP8) DEF_SVE_FUNCTION_GS_FPM (svcvt1, unary_convert, cvt_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svcvt2, unary_convert, cvt_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svcvtlt1, unary_convert, cvt_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svcvtlt2, unary_convert, cvt_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svcvtn, unary_convertxn_narrow, cvtn_mf8, x2, none, set) DEF_SVE_FUNCTION_GS_FPM (svcvtnb, unary_convertxn_narrow, cvtnx_mf8, x2, none, set) DEF_SVE_FUNCTION_GS_FPM (svcvtnt, unary_convertxn_narrowt, cvtnx_mf8, x2, none, set) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ streaming_compatible (AARCH64_FL_SVE2 | AARCH64_FL_FP8FMA, \ AARCH64_FL_SSVE_FP8FMA) DEF_SVE_FUNCTION_GS_FPM (svmlalb, ternary_mfloat8_opt_n, h_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlalt, ternary_mfloat8_opt_n, h_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlalb_lane, ternary_mfloat8_lane, h_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlalt_lane, ternary_mfloat8_lane, h_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlallbb, ternary_mfloat8_opt_n, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlallbt, ternary_mfloat8_opt_n, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlalltb, ternary_mfloat8_opt_n, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlalltt, ternary_mfloat8_opt_n, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlalltt_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlallbb_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlallbt_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svmlalltb_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ streaming_compatible (AARCH64_FL_SVE2 | AARCH64_FL_FP8DOT4, \ AARCH64_FL_SSVE_FP8DOT4) DEF_SVE_FUNCTION_GS_FPM (svdot, ternary_mfloat8, s_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svdot_lane, ternary_mfloat8_lane_group_selection, s_float_mf8, none, none, set) #undef REQUIRED_EXTENSIONS #define REQUIRED_EXTENSIONS \ streaming_compatible (AARCH64_FL_SVE2 | AARCH64_FL_FP8DOT2, \ AARCH64_FL_SSVE_FP8DOT2) DEF_SVE_FUNCTION_GS_FPM (svdot, ternary_mfloat8, h_float_mf8, none, none, set) DEF_SVE_FUNCTION_GS_FPM (svdot_lane, ternary_mfloat8_lane_group_selection, h_float_mf8, none, none, set) #undef REQUIRED_EXTENSIONS