xref: /openbmc/qemu/target/arm/tcg/helper-sme.h (revision ec08d9a51e6af3cd3edbdbf2ca6e97a1e2b5f0d1)
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