]> git.proxmox.com Git - mirror_qemu.git/blame - target/loongarch/helper.h
target/loongarch: Adjust functions and structure to support user-mode
[mirror_qemu.git] / target / loongarch / helper.h
CommitLineData
f8da88d7
SG
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Copyright (c) 2021 Loongson Technology Corporation Limited
4 */
5
6DEF_HELPER_2(raise_exception, noreturn, env, i32)
ad08cb3f
SG
7
8DEF_HELPER_FLAGS_1(bitrev_w, TCG_CALL_NO_RWG_SE, tl, tl)
9DEF_HELPER_FLAGS_1(bitrev_d, TCG_CALL_NO_RWG_SE, tl, tl)
10DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl)
bb79174d
SG
11
12DEF_HELPER_FLAGS_3(asrtle_d, TCG_CALL_NO_WG, void, env, tl, tl)
13DEF_HELPER_FLAGS_3(asrtgt_d, TCG_CALL_NO_WG, void, env, tl, tl)
8708a04a
SG
14
15DEF_HELPER_FLAGS_3(crc32, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl)
16DEF_HELPER_FLAGS_3(crc32c, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl)
17DEF_HELPER_FLAGS_2(cpucfg, TCG_CALL_NO_RWG_SE, tl, env, tl)
d578ca6c
SG
18
19/* Floating-point helper */
20DEF_HELPER_FLAGS_3(fadd_s, TCG_CALL_NO_WG, i64, env, i64, i64)
21DEF_HELPER_FLAGS_3(fadd_d, TCG_CALL_NO_WG, i64, env, i64, i64)
22DEF_HELPER_FLAGS_3(fsub_s, TCG_CALL_NO_WG, i64, env, i64, i64)
23DEF_HELPER_FLAGS_3(fsub_d, TCG_CALL_NO_WG, i64, env, i64, i64)
24DEF_HELPER_FLAGS_3(fmul_s, TCG_CALL_NO_WG, i64, env, i64, i64)
25DEF_HELPER_FLAGS_3(fmul_d, TCG_CALL_NO_WG, i64, env, i64, i64)
26DEF_HELPER_FLAGS_3(fdiv_s, TCG_CALL_NO_WG, i64, env, i64, i64)
27DEF_HELPER_FLAGS_3(fdiv_d, TCG_CALL_NO_WG, i64, env, i64, i64)
28DEF_HELPER_FLAGS_3(fmax_s, TCG_CALL_NO_WG, i64, env, i64, i64)
29DEF_HELPER_FLAGS_3(fmax_d, TCG_CALL_NO_WG, i64, env, i64, i64)
30DEF_HELPER_FLAGS_3(fmin_s, TCG_CALL_NO_WG, i64, env, i64, i64)
31DEF_HELPER_FLAGS_3(fmin_d, TCG_CALL_NO_WG, i64, env, i64, i64)
32DEF_HELPER_FLAGS_3(fmaxa_s, TCG_CALL_NO_WG, i64, env, i64, i64)
33DEF_HELPER_FLAGS_3(fmaxa_d, TCG_CALL_NO_WG, i64, env, i64, i64)
34DEF_HELPER_FLAGS_3(fmina_s, TCG_CALL_NO_WG, i64, env, i64, i64)
35DEF_HELPER_FLAGS_3(fmina_d, TCG_CALL_NO_WG, i64, env, i64, i64)
36
37DEF_HELPER_FLAGS_5(fmuladd_s, TCG_CALL_NO_WG, i64, env, i64, i64, i64, i32)
38DEF_HELPER_FLAGS_5(fmuladd_d, TCG_CALL_NO_WG, i64, env, i64, i64, i64, i32)
39
40DEF_HELPER_FLAGS_3(fscaleb_s, TCG_CALL_NO_WG, i64, env, i64, i64)
41DEF_HELPER_FLAGS_3(fscaleb_d, TCG_CALL_NO_WG, i64, env, i64, i64)
42
43DEF_HELPER_FLAGS_2(flogb_s, TCG_CALL_NO_WG, i64, env, i64)
44DEF_HELPER_FLAGS_2(flogb_d, TCG_CALL_NO_WG, i64, env, i64)
45
46DEF_HELPER_FLAGS_2(fsqrt_s, TCG_CALL_NO_WG, i64, env, i64)
47DEF_HELPER_FLAGS_2(fsqrt_d, TCG_CALL_NO_WG, i64, env, i64)
48DEF_HELPER_FLAGS_2(frsqrt_s, TCG_CALL_NO_WG, i64, env, i64)
49DEF_HELPER_FLAGS_2(frsqrt_d, TCG_CALL_NO_WG, i64, env, i64)
50DEF_HELPER_FLAGS_2(frecip_s, TCG_CALL_NO_WG, i64, env, i64)
51DEF_HELPER_FLAGS_2(frecip_d, TCG_CALL_NO_WG, i64, env, i64)
52
53DEF_HELPER_FLAGS_2(fclass_s, TCG_CALL_NO_RWG_SE, i64, env, i64)
54DEF_HELPER_FLAGS_2(fclass_d, TCG_CALL_NO_RWG_SE, i64, env, i64)
9b741076
SG
55
56/* fcmp.cXXX.s */
57DEF_HELPER_4(fcmp_c_s, i64, env, i64, i64, i32)
58/* fcmp.sXXX.s */
59DEF_HELPER_4(fcmp_s_s, i64, env, i64, i64, i32)
60/* fcmp.cXXX.d */
61DEF_HELPER_4(fcmp_c_d, i64, env, i64, i64, i32)
62/* fcmp.sXXX.d */
63DEF_HELPER_4(fcmp_s_d, i64, env, i64, i64, i32)
7c1f8870
SG
64
65DEF_HELPER_2(fcvt_d_s, i64, env, i64)
66DEF_HELPER_2(fcvt_s_d, i64, env, i64)
67DEF_HELPER_2(ffint_d_w, i64, env, i64)
68DEF_HELPER_2(ffint_d_l, i64, env, i64)
69DEF_HELPER_2(ffint_s_w, i64, env, i64)
70DEF_HELPER_2(ffint_s_l, i64, env, i64)
71DEF_HELPER_2(ftintrm_l_s, i64, env, i64)
72DEF_HELPER_2(ftintrm_l_d, i64, env, i64)
73DEF_HELPER_2(ftintrm_w_s, i64, env, i64)
74DEF_HELPER_2(ftintrm_w_d, i64, env, i64)
75DEF_HELPER_2(ftintrp_l_s, i64, env, i64)
76DEF_HELPER_2(ftintrp_l_d, i64, env, i64)
77DEF_HELPER_2(ftintrp_w_s, i64, env, i64)
78DEF_HELPER_2(ftintrp_w_d, i64, env, i64)
79DEF_HELPER_2(ftintrz_l_s, i64, env, i64)
80DEF_HELPER_2(ftintrz_l_d, i64, env, i64)
81DEF_HELPER_2(ftintrz_w_s, i64, env, i64)
82DEF_HELPER_2(ftintrz_w_d, i64, env, i64)
83DEF_HELPER_2(ftintrne_l_s, i64, env, i64)
84DEF_HELPER_2(ftintrne_l_d, i64, env, i64)
85DEF_HELPER_2(ftintrne_w_s, i64, env, i64)
86DEF_HELPER_2(ftintrne_w_d, i64, env, i64)
87DEF_HELPER_2(ftint_l_s, i64, env, i64)
88DEF_HELPER_2(ftint_l_d, i64, env, i64)
89DEF_HELPER_2(ftint_w_s, i64, env, i64)
90DEF_HELPER_2(ftint_w_d, i64, env, i64)
91DEF_HELPER_2(frint_s, i64, env, i64)
92DEF_HELPER_2(frint_d, i64, env, i64)
b7dabd56
SG
93
94DEF_HELPER_FLAGS_2(set_rounding_mode, TCG_CALL_NO_RWG, void, env, i32)
5b1dedfe 95
f9bf5074
XY
96DEF_HELPER_1(rdtime_d, i64, env)
97
0093b9a5 98#ifndef CONFIG_USER_ONLY
5b1dedfe
XY
99/* CSRs helper */
100DEF_HELPER_1(csrrd_pgd, i64, env)
101DEF_HELPER_1(csrrd_tval, i64, env)
102DEF_HELPER_2(csrwr_estat, i64, env, tl)
103DEF_HELPER_2(csrwr_asid, i64, env, tl)
104DEF_HELPER_2(csrwr_tcfg, i64, env, tl)
105DEF_HELPER_2(csrwr_ticlr, i64, env, tl)
f84a2aac
XY
106DEF_HELPER_2(iocsrrd_b, i64, env, tl)
107DEF_HELPER_2(iocsrrd_h, i64, env, tl)
108DEF_HELPER_2(iocsrrd_w, i64, env, tl)
109DEF_HELPER_2(iocsrrd_d, i64, env, tl)
110DEF_HELPER_3(iocsrwr_b, void, env, tl, tl)
111DEF_HELPER_3(iocsrwr_h, void, env, tl, tl)
112DEF_HELPER_3(iocsrwr_w, void, env, tl, tl)
113DEF_HELPER_3(iocsrwr_d, void, env, tl, tl)
fcbbeb8e
XY
114
115/* TLB helper */
116DEF_HELPER_1(tlbwr, void, env)
117DEF_HELPER_1(tlbfill, void, env)
118DEF_HELPER_1(tlbsrch, void, env)
119DEF_HELPER_1(tlbrd, void, env)
120DEF_HELPER_1(tlbclr, void, env)
121DEF_HELPER_1(tlbflush, void, env)
122DEF_HELPER_1(invtlb_all, void, env)
123DEF_HELPER_2(invtlb_all_g, void, env, i32)
124DEF_HELPER_2(invtlb_all_asid, void, env, tl)
125DEF_HELPER_3(invtlb_page_asid, void, env, tl, tl)
126DEF_HELPER_3(invtlb_page_asid_or_g, void, env, tl, tl)
d2cba6f7
XY
127
128DEF_HELPER_4(lddir, tl, env, tl, tl, i32)
129DEF_HELPER_4(ldpte, void, env, tl, tl, i32)
130DEF_HELPER_1(ertn, void, env)
131DEF_HELPER_1(idle, void, env)
0093b9a5 132#endif