master
h 139 lines 5.83 KB
Raw
1 /*
2 * Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, see <http://www.gnu.org/licenses/>.
16 */
17
18 #include "internal.h"
19 #include "helper_protos_generated.h.inc"
20
21 DEF_HELPER_FLAGS_3(raise_exception, TCG_CALL_NO_RETURN, noreturn, env, i32, i32)
22 DEF_HELPER_2(commit_store, void, env, int)
23 DEF_HELPER_3(gather_store, void, env, i32, int)
24 DEF_HELPER_1(commit_hvx_stores, void, env)
25 DEF_HELPER_FLAGS_4(fcircadd, TCG_CALL_NO_RWG_SE, s32, s32, s32, s32, s32)
26 DEF_HELPER_FLAGS_1(fbrev, TCG_CALL_NO_RWG_SE, i32, i32)
27 DEF_HELPER_4(sfrecipa, i64, env, f32, f32, i32)
28 DEF_HELPER_3(sfinvsqrta, i64, env, f32, i32)
29 DEF_HELPER_5(vacsh_val, s64, env, s64, s64, s64, i32)
30 DEF_HELPER_FLAGS_4(vacsh_pred, TCG_CALL_NO_RWG_SE, s32, env, s64, s64, s64)
31 DEF_HELPER_FLAGS_2(cabacdecbin_val, TCG_CALL_NO_RWG_SE, s64, s64, s64)
32 DEF_HELPER_FLAGS_2(cabacdecbin_pred, TCG_CALL_NO_RWG_SE, s32, s64, s64)
33
34 /* Floating point */
35 DEF_HELPER_3(conv_sf2df, f64, env, f32, i32)
36 DEF_HELPER_3(conv_df2sf, f32, env, f64, i32)
37 DEF_HELPER_3(conv_uw2sf, f32, env, s32, i32)
38 DEF_HELPER_3(conv_uw2df, f64, env, s32, i32)
39 DEF_HELPER_3(conv_w2sf, f32, env, s32, i32)
40 DEF_HELPER_3(conv_w2df, f64, env, s32, i32)
41 DEF_HELPER_3(conv_ud2sf, f32, env, s64, i32)
42 DEF_HELPER_3(conv_ud2df, f64, env, s64, i32)
43 DEF_HELPER_3(conv_d2sf, f32, env, s64, i32)
44 DEF_HELPER_3(conv_d2df, f64, env, s64, i32)
45 DEF_HELPER_3(conv_sf2uw, i32, env, f32, i32)
46 DEF_HELPER_3(conv_sf2w, s32, env, f32, i32)
47 DEF_HELPER_3(conv_sf2ud, i64, env, f32, i32)
48 DEF_HELPER_3(conv_sf2d, s64, env, f32, i32)
49 DEF_HELPER_3(conv_df2uw, i32, env, f64, i32)
50 DEF_HELPER_3(conv_df2w, s32, env, f64, i32)
51 DEF_HELPER_3(conv_df2ud, i64, env, f64, i32)
52 DEF_HELPER_3(conv_df2d, s64, env, f64, i32)
53 DEF_HELPER_3(conv_sf2uw_chop, i32, env, f32, i32)
54 DEF_HELPER_3(conv_sf2w_chop, s32, env, f32, i32)
55 DEF_HELPER_3(conv_sf2ud_chop, i64, env, f32, i32)
56 DEF_HELPER_3(conv_sf2d_chop, s64, env, f32, i32)
57 DEF_HELPER_3(conv_df2uw_chop, i32, env, f64, i32)
58 DEF_HELPER_3(conv_df2w_chop, s32, env, f64, i32)
59 DEF_HELPER_3(conv_df2ud_chop, i64, env, f64, i32)
60 DEF_HELPER_3(conv_df2d_chop, s64, env, f64, i32)
61 DEF_HELPER_4(sfadd, f32, env, f32, f32, i32)
62 DEF_HELPER_4(sfsub, f32, env, f32, f32, i32)
63 DEF_HELPER_4(sfcmpeq, s32, env, f32, f32, i32)
64 DEF_HELPER_4(sfcmpgt, s32, env, f32, f32, i32)
65 DEF_HELPER_4(sfcmpge, s32, env, f32, f32, i32)
66 DEF_HELPER_4(sfcmpuo, s32, env, f32, f32, i32)
67 DEF_HELPER_4(sfmax, f32, env, f32, f32, i32)
68 DEF_HELPER_4(sfmin, f32, env, f32, f32, i32)
69 DEF_HELPER_4(sfclass, s32, env, f32, s32, i32)
70 DEF_HELPER_4(sffixupn, f32, env, f32, f32, i32)
71 DEF_HELPER_4(sffixupd, f32, env, f32, f32, i32)
72 DEF_HELPER_3(sffixupr, f32, env, f32, i32)
73
74 DEF_HELPER_4(dfadd, f64, env, f64, f64, i32)
75 DEF_HELPER_4(dfsub, f64, env, f64, f64, i32)
76 DEF_HELPER_4(dfmax, f64, env, f64, f64, i32)
77 DEF_HELPER_4(dfmin, f64, env, f64, f64, i32)
78 DEF_HELPER_4(dfcmpeq, s32, env, f64, f64, i32)
79 DEF_HELPER_4(dfcmpgt, s32, env, f64, f64, i32)
80 DEF_HELPER_4(dfcmpge, s32, env, f64, f64, i32)
81 DEF_HELPER_4(dfcmpuo, s32, env, f64, f64, i32)
82 DEF_HELPER_4(dfclass, s32, env, f64, s32, i32)
83
84 DEF_HELPER_4(sfmpy, f32, env, f32, f32, i32)
85 DEF_HELPER_5(sffma, f32, env, f32, f32, f32, i32)
86 DEF_HELPER_6(sffma_sc, f32, env, f32, f32, f32, f32, i32)
87 DEF_HELPER_5(sffms, f32, env, f32, f32, f32, i32)
88 DEF_HELPER_5(sffma_lib, f32, env, f32, f32, f32, i32)
89 DEF_HELPER_5(sffms_lib, f32, env, f32, f32, f32, i32)
90
91 DEF_HELPER_4(dfmpyfix, f64, env, f64, f64, i32)
92 DEF_HELPER_5(dfmpyhh, f64, env, f64, f64, f64, i32)
93
94 /* Histogram instructions */
95 DEF_HELPER_1(vhist, void, env)
96 DEF_HELPER_1(vhistq, void, env)
97 DEF_HELPER_1(vwhist256, void, env)
98 DEF_HELPER_1(vwhist256q, void, env)
99 DEF_HELPER_1(vwhist256_sat, void, env)
100 DEF_HELPER_1(vwhist256q_sat, void, env)
101 DEF_HELPER_1(vwhist128, void, env)
102 DEF_HELPER_1(vwhist128q, void, env)
103 DEF_HELPER_2(vwhist128m, void, env, s32)
104 DEF_HELPER_2(vwhist128qm, void, env, s32)
105
106 DEF_HELPER_4(probe_noshuf_load, void, env, i32, int, int)
107 DEF_HELPER_2(probe_pkt_scalar_store_s0, void, env, int)
108 DEF_HELPER_2(probe_hvx_stores, void, env, int)
109 DEF_HELPER_2(probe_pkt_scalar_hvx_stores, void, env, int)
110
111 DEF_HELPER_FLAGS_4(gvec_sabsdiff_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
112 DEF_HELPER_FLAGS_4(gvec_sabsdiff_w, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
113 DEF_HELPER_FLAGS_4(gvec_uabsdiff_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
114 DEF_HELPER_FLAGS_4(gvec_uabsdiff_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
115
116 #if !defined(CONFIG_USER_ONLY)
117 DEF_HELPER_3(raise_stack_overflow, void, env, i32, i32)
118 DEF_HELPER_2(swi, void, env, i32)
119 DEF_HELPER_2(cswi, void, env, i32)
120 DEF_HELPER_2(ciad, void, env, i32)
121 DEF_HELPER_2(siad, void, env, i32)
122 DEF_HELPER_2(iassignw, void, env, i32)
123 DEF_HELPER_2(iassignr, i32, env, i32)
124 DEF_HELPER_2(getimask, i32, env, i32)
125 DEF_HELPER_3(setimask, void, env, i32, i32)
126 DEF_HELPER_2(sreg_read, i32, env, i32)
127 DEF_HELPER_2(sreg_read_pair, i64, env, i32)
128 DEF_HELPER_2(greg_read, i32, env, i32)
129 DEF_HELPER_2(greg_read_pair, i64, env, i32)
130 DEF_HELPER_3(sreg_write_masked, void, env, i32, i32)
131 DEF_HELPER_3(setprio, void, env, i32, i32)
132 DEF_HELPER_2(start, void, env, i32)
133 DEF_HELPER_1(stop, void, env)
134 DEF_HELPER_2(wait, void, env, i32)
135 DEF_HELPER_2(resume, void, env, i32)
136 DEF_HELPER_1(resched, void, env)
137 DEF_HELPER_3(modify_ssr, void, env, i32, i32)
138 DEF_HELPER_1(pending_interrupt, void, env)
139 #endif