167ce09b5SRichard Henderson /* 267ce09b5SRichard Henderson * AArch64 SME specific helper definitions 367ce09b5SRichard Henderson * 467ce09b5SRichard Henderson * Copyright (c) 2022 Linaro, Ltd 567ce09b5SRichard Henderson * 667ce09b5SRichard Henderson * This library is free software; you can redistribute it and/or 767ce09b5SRichard Henderson * modify it under the terms of the GNU Lesser General Public 867ce09b5SRichard Henderson * License as published by the Free Software Foundation; either 967ce09b5SRichard Henderson * version 2.1 of the License, or (at your option) any later version. 1067ce09b5SRichard Henderson * 1167ce09b5SRichard Henderson * This library is distributed in the hope that it will be useful, 1267ce09b5SRichard Henderson * but WITHOUT ANY WARRANTY; without even the implied warranty of 1367ce09b5SRichard Henderson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1467ce09b5SRichard Henderson * Lesser General Public License for more details. 1567ce09b5SRichard Henderson * 1667ce09b5SRichard Henderson * You should have received a copy of the GNU Lesser General Public 1767ce09b5SRichard Henderson * License along with this library; if not, see <http://www.gnu.org/licenses/>. 1867ce09b5SRichard Henderson */ 1967ce09b5SRichard Henderson 2067ce09b5SRichard Henderson DEF_HELPER_FLAGS_3(set_svcr, TCG_CALL_NO_RWG, void, env, i32, i32) 2167ce09b5SRichard Henderson 2267ce09b5SRichard Henderson DEF_HELPER_FLAGS_3(sme_zero, TCG_CALL_NO_RWG, void, env, i32, i32) 2367ce09b5SRichard Henderson 2467ce09b5SRichard Henderson /* Move to/from vertical array slices, i.e. columns, so 'c'. */ 2567ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 2667ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 2767ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 2867ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 2967ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 3067ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 3167ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 3267ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 3367ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_cz_q, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 3467ce09b5SRichard Henderson DEF_HELPER_FLAGS_4(sme_mova_zc_q, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) 3567ce09b5SRichard Henderson 3667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 3767ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 3867ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 3967ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1b_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4067ce09b5SRichard Henderson 4167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4767ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4867ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1h_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 4967ce09b5SRichard Henderson 5067ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5767ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1s_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 5867ce09b5SRichard Henderson 5967ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6067ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1d_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6767ce09b5SRichard Henderson 6867ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 6967ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7067ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_ld1q_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7667ce09b5SRichard Henderson 7767ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7867ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 7967ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8067ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1b_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8167ce09b5SRichard Henderson 8267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8767ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8867ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 8967ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1h_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9067ce09b5SRichard Henderson 9167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9767ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9867ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1s_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 9967ce09b5SRichard Henderson 10067ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10767ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1d_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 10867ce09b5SRichard Henderson 10967ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11067ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_h, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11267ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_v, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11367ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11467ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_h_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11567ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_be_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11667ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_st1q_le_v_mte, TCG_CALL_NO_WG, void, env, ptr, ptr, tl, i32) 11767ce09b5SRichard Henderson 11867ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addha_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 11967ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addva_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 12067ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addha_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 12167ce09b5SRichard Henderson DEF_HELPER_FLAGS_5(sme_addva_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) 12267ce09b5SRichard Henderson 12367ce09b5SRichard Henderson DEF_HELPER_FLAGS_7(sme_fmopa_h, TCG_CALL_NO_RWG, 12455f9f4eeSPeter Maydell void, ptr, ptr, ptr, ptr, ptr, env, i32) 12567ce09b5SRichard Henderson DEF_HELPER_FLAGS_7(sme_fmopa_s, TCG_CALL_NO_RWG, 12667ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, ptr, i32) 12767ce09b5SRichard Henderson DEF_HELPER_FLAGS_7(sme_fmopa_d, TCG_CALL_NO_RWG, 12867ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, ptr, i32) 129*ecabcfa4SPeter Maydell DEF_HELPER_FLAGS_7(sme_bfmopa, TCG_CALL_NO_RWG, 130*ecabcfa4SPeter Maydell void, ptr, ptr, ptr, ptr, ptr, env, i32) 13167ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_smopa_s, TCG_CALL_NO_RWG, 13267ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 13367ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_umopa_s, TCG_CALL_NO_RWG, 13467ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 13567ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_sumopa_s, TCG_CALL_NO_RWG, 13667ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 13767ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_usmopa_s, TCG_CALL_NO_RWG, 13867ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 13967ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_smopa_d, TCG_CALL_NO_RWG, 14067ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 14167ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_umopa_d, TCG_CALL_NO_RWG, 14267ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 14367ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_sumopa_d, TCG_CALL_NO_RWG, 14467ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 14567ce09b5SRichard Henderson DEF_HELPER_FLAGS_6(sme_usmopa_d, TCG_CALL_NO_RWG, 14667ce09b5SRichard Henderson void, ptr, ptr, ptr, ptr, ptr, i32) 147