1*67ce09b5SRichard Henderson /* 2*67ce09b5SRichard Henderson * AArch64 SME specific helper definitions 3*67ce09b5SRichard Henderson * 4*67ce09b5SRichard Henderson * Copyright (c) 2022 Linaro, Ltd 5*67ce09b5SRichard Henderson * 6*67ce09b5SRichard Henderson * This library is free software; you can redistribute it and/or 7*67ce09b5SRichard Henderson * modify it under the terms of the GNU Lesser General Public 8*67ce09b5SRichard Henderson * License as published by the Free Software Foundation; either 9*67ce09b5SRichard Henderson * version 2.1 of the License, or (at your option) any later version. 10*67ce09b5SRichard Henderson * 11*67ce09b5SRichard Henderson * This library is distributed in the hope that it will be useful, 12*67ce09b5SRichard Henderson * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*67ce09b5SRichard Henderson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*67ce09b5SRichard Henderson * Lesser General Public License for more details. 15*67ce09b5SRichard Henderson * 16*67ce09b5SRichard Henderson * You should have received a copy of the GNU Lesser General Public 17*67ce09b5SRichard Henderson * License along with this library; if not, see <http://www.gnu.org/licenses/>. 18*67ce09b5SRichard Henderson */ 19*67ce09b5SRichard Henderson 20*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_3(set_svcr, TCG_CALL_NO_RWG, void, env, i32, i32) 21*67ce09b5SRichard Henderson 22*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_3(sme_zero, TCG_CALL_NO_RWG, void, env, i32, i32) 23*67ce09b5SRichard Henderson 24*67ce09b5SRichard Henderson /* Move to/from vertical array slices, i.e. columns, so 'c'. */ 25*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 26*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 27*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 28*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 29*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 30*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 31*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 32*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 33*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_q, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 34*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_q, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 35*67ce09b5SRichard Henderson 36*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 37*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 38*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 39*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 40*67ce09b5SRichard Henderson 41*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 42*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 43*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 44*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 45*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 46*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 47*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 48*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 49*67ce09b5SRichard Henderson 50*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 51*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 52*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 53*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 54*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 55*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 56*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 57*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 58*67ce09b5SRichard Henderson 59*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 60*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 61*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 62*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 63*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 64*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 65*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 66*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 67*67ce09b5SRichard Henderson 68*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 69*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 70*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 71*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 72*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 73*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 74*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 75*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 76*67ce09b5SRichard Henderson 77*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 78*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 79*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 80*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 81*67ce09b5SRichard Henderson 82*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 83*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 84*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 85*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 86*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 87*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 88*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 89*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 90*67ce09b5SRichard Henderson 91*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 92*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 93*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 94*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 95*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 96*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 97*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 98*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 99*67ce09b5SRichard Henderson 100*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 101*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 102*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 103*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 104*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 105*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 106*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 107*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 108*67ce09b5SRichard Henderson 109*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 110*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 111*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 112*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 113*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 114*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 115*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 116*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 117*67ce09b5SRichard Henderson 118*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addha_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 119*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addva_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 120*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addha_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 121*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addva_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 122*67ce09b5SRichard Henderson 123*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_7(sme_fmopa_h, TCG_CALL_NO_RWG, 124*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, ptr, i32) 125*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_7(sme_fmopa_s, TCG_CALL_NO_RWG, 126*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, ptr, i32) 127*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_7(sme_fmopa_d, TCG_CALL_NO_RWG, 128*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, ptr, i32) 129*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_bfmopa, TCG_CALL_NO_RWG, 130*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 131*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_smopa_s, TCG_CALL_NO_RWG, 132*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 133*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_umopa_s, TCG_CALL_NO_RWG, 134*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 135*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_sumopa_s, TCG_CALL_NO_RWG, 136*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 137*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_usmopa_s, TCG_CALL_NO_RWG, 138*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 139*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_smopa_d, TCG_CALL_NO_RWG, 140*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 141*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_umopa_d, TCG_CALL_NO_RWG, 142*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 143*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_sumopa_d, TCG_CALL_NO_RWG, 144*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 145*67ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_usmopa_d, TCG_CALL_NO_RWG, 146*67ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 147