xref: /openbmc/qemu/target/mips/helper.h (revision 03afdc28)
1fcf5ef2aSThomas Huth DEF_HELPER_3(raise_exception_err, noreturn, env, i32, int)
2fcf5ef2aSThomas Huth DEF_HELPER_2(raise_exception, noreturn, env, i32)
3fcf5ef2aSThomas Huth DEF_HELPER_1(raise_exception_debug, noreturn, env)
4fcf5ef2aSThomas Huth 
5fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64
6fcf5ef2aSThomas Huth DEF_HELPER_4(sdl, void, env, tl, tl, int)
7fcf5ef2aSThomas Huth DEF_HELPER_4(sdr, void, env, tl, tl, int)
8fcf5ef2aSThomas Huth #endif
9fcf5ef2aSThomas Huth DEF_HELPER_4(swl, void, env, tl, tl, int)
10fcf5ef2aSThomas Huth DEF_HELPER_4(swr, void, env, tl, tl, int)
11fcf5ef2aSThomas Huth 
12fcf5ef2aSThomas Huth #ifndef CONFIG_USER_ONLY
13fcf5ef2aSThomas Huth DEF_HELPER_3(ll, tl, env, tl, int)
14fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64
15fcf5ef2aSThomas Huth DEF_HELPER_3(lld, tl, env, tl, int)
16fcf5ef2aSThomas Huth #endif
17fcf5ef2aSThomas Huth #endif
18fcf5ef2aSThomas Huth 
19fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl)
20fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64
21fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(dbitswap, TCG_CALL_NO_RWG_SE, tl, tl)
22fcf5ef2aSThomas Huth #endif
23fcf5ef2aSThomas Huth 
24e222f506SMatthew Fortune DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32)
25e222f506SMatthew Fortune 
26fcf5ef2aSThomas Huth /* microMIPS functions */
27fcf5ef2aSThomas Huth DEF_HELPER_4(lwm, void, env, tl, tl, i32)
28fcf5ef2aSThomas Huth DEF_HELPER_4(swm, void, env, tl, tl, i32)
29fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64
30fcf5ef2aSThomas Huth DEF_HELPER_4(ldm, void, env, tl, tl, i32)
31fcf5ef2aSThomas Huth DEF_HELPER_4(sdm, void, env, tl, tl, i32)
32fcf5ef2aSThomas Huth #endif
33fcf5ef2aSThomas Huth 
34fcf5ef2aSThomas Huth DEF_HELPER_2(fork, void, tl, tl)
35fcf5ef2aSThomas Huth DEF_HELPER_2(yield, tl, env, tl)
36fcf5ef2aSThomas Huth 
37fcf5ef2aSThomas Huth /* CP1 functions */
38fcf5ef2aSThomas Huth DEF_HELPER_2(cfc1, tl, env, i32)
39fcf5ef2aSThomas Huth DEF_HELPER_4(ctc1, void, env, tl, i32, i32)
40fcf5ef2aSThomas Huth 
41fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtd_s, i64, env, i32)
42fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtd_w, i64, env, i32)
43fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtd_l, i64, env, i64)
44fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtps_pw, i64, env, i64)
45fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtpw_ps, i64, env, i64)
46fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_d, i32, env, i64)
47fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_w, i32, env, i32)
48fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_l, i32, env, i64)
49fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_pl, i32, env, i32)
50fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_pu, i32, env, i32)
51fcf5ef2aSThomas Huth 
52fcf5ef2aSThomas Huth DEF_HELPER_3(float_addr_ps, i64, env, i64, i64)
53fcf5ef2aSThomas Huth DEF_HELPER_3(float_mulr_ps, i64, env, i64, i64)
54fcf5ef2aSThomas Huth 
55fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(float_class_s, TCG_CALL_NO_RWG_SE, i32, env, i32)
56fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(float_class_d, TCG_CALL_NO_RWG_SE, i64, env, i64)
57fcf5ef2aSThomas Huth 
58fcf5ef2aSThomas Huth #define FOP_PROTO(op)                                     \
59fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32) \
60fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64)
61fcf5ef2aSThomas Huth FOP_PROTO(maddf)
62fcf5ef2aSThomas Huth FOP_PROTO(msubf)
63fcf5ef2aSThomas Huth #undef FOP_PROTO
64fcf5ef2aSThomas Huth 
65fcf5ef2aSThomas Huth #define FOP_PROTO(op)                                \
66fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32) \
67fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64)
68fcf5ef2aSThomas Huth FOP_PROTO(max)
69fcf5ef2aSThomas Huth FOP_PROTO(maxa)
70fcf5ef2aSThomas Huth FOP_PROTO(min)
71fcf5ef2aSThomas Huth FOP_PROTO(mina)
72fcf5ef2aSThomas Huth #undef FOP_PROTO
73fcf5ef2aSThomas Huth 
74fcf5ef2aSThomas Huth #define FOP_PROTO(op)                            \
75fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _l_s, i64, env, i32) \
76fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _l_d, i64, env, i64) \
77fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _w_s, i32, env, i32) \
78fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _w_d, i32, env, i64)
79fcf5ef2aSThomas Huth FOP_PROTO(cvt)
80fcf5ef2aSThomas Huth FOP_PROTO(round)
81fcf5ef2aSThomas Huth FOP_PROTO(trunc)
82fcf5ef2aSThomas Huth FOP_PROTO(ceil)
83fcf5ef2aSThomas Huth FOP_PROTO(floor)
84fcf5ef2aSThomas Huth FOP_PROTO(cvt_2008)
85fcf5ef2aSThomas Huth FOP_PROTO(round_2008)
86fcf5ef2aSThomas Huth FOP_PROTO(trunc_2008)
87fcf5ef2aSThomas Huth FOP_PROTO(ceil_2008)
88fcf5ef2aSThomas Huth FOP_PROTO(floor_2008)
89fcf5ef2aSThomas Huth #undef FOP_PROTO
90fcf5ef2aSThomas Huth 
91fcf5ef2aSThomas Huth #define FOP_PROTO(op)                            \
92fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _s, i32, env, i32)  \
93fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _d, i64, env, i64)
94fcf5ef2aSThomas Huth FOP_PROTO(sqrt)
95fcf5ef2aSThomas Huth FOP_PROTO(rsqrt)
96fcf5ef2aSThomas Huth FOP_PROTO(recip)
97fcf5ef2aSThomas Huth FOP_PROTO(rint)
98fcf5ef2aSThomas Huth #undef FOP_PROTO
99fcf5ef2aSThomas Huth 
100fcf5ef2aSThomas Huth #define FOP_PROTO(op)                       \
101fcf5ef2aSThomas Huth DEF_HELPER_1(float_ ## op ## _s, i32, i32)  \
102fcf5ef2aSThomas Huth DEF_HELPER_1(float_ ## op ## _d, i64, i64)  \
103fcf5ef2aSThomas Huth DEF_HELPER_1(float_ ## op ## _ps, i64, i64)
104fcf5ef2aSThomas Huth FOP_PROTO(abs)
105fcf5ef2aSThomas Huth FOP_PROTO(chs)
106fcf5ef2aSThomas Huth #undef FOP_PROTO
107fcf5ef2aSThomas Huth 
108fcf5ef2aSThomas Huth #define FOP_PROTO(op)                            \
109fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _s, i32, env, i32)  \
110fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _d, i64, env, i64)  \
111fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _ps, i64, env, i64)
112fcf5ef2aSThomas Huth FOP_PROTO(recip1)
113fcf5ef2aSThomas Huth FOP_PROTO(rsqrt1)
114fcf5ef2aSThomas Huth #undef FOP_PROTO
115fcf5ef2aSThomas Huth 
116fcf5ef2aSThomas Huth #define FOP_PROTO(op)                                  \
117fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32)   \
118fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64)   \
119fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _ps, i64, env, i64, i64)
120fcf5ef2aSThomas Huth FOP_PROTO(add)
121fcf5ef2aSThomas Huth FOP_PROTO(sub)
122fcf5ef2aSThomas Huth FOP_PROTO(mul)
123fcf5ef2aSThomas Huth FOP_PROTO(div)
124fcf5ef2aSThomas Huth FOP_PROTO(recip2)
125fcf5ef2aSThomas Huth FOP_PROTO(rsqrt2)
126fcf5ef2aSThomas Huth #undef FOP_PROTO
127fcf5ef2aSThomas Huth 
128fcf5ef2aSThomas Huth #define FOP_PROTO(op)                                      \
129fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32)  \
130fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64)  \
131fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _ps, i64, env, i64, i64, i64)
132fcf5ef2aSThomas Huth FOP_PROTO(madd)
133fcf5ef2aSThomas Huth FOP_PROTO(msub)
134fcf5ef2aSThomas Huth FOP_PROTO(nmadd)
135fcf5ef2aSThomas Huth FOP_PROTO(nmsub)
136fcf5ef2aSThomas Huth #undef FOP_PROTO
137fcf5ef2aSThomas Huth 
138fcf5ef2aSThomas Huth #define FOP_PROTO(op)                                    \
139fcf5ef2aSThomas Huth DEF_HELPER_4(cmp_d_ ## op, void, env, i64, i64, int)     \
140fcf5ef2aSThomas Huth DEF_HELPER_4(cmpabs_d_ ## op, void, env, i64, i64, int)  \
141fcf5ef2aSThomas Huth DEF_HELPER_4(cmp_s_ ## op, void, env, i32, i32, int)     \
142fcf5ef2aSThomas Huth DEF_HELPER_4(cmpabs_s_ ## op, void, env, i32, i32, int)  \
143fcf5ef2aSThomas Huth DEF_HELPER_4(cmp_ps_ ## op, void, env, i64, i64, int)    \
144fcf5ef2aSThomas Huth DEF_HELPER_4(cmpabs_ps_ ## op, void, env, i64, i64, int)
145fcf5ef2aSThomas Huth FOP_PROTO(f)
146fcf5ef2aSThomas Huth FOP_PROTO(un)
147fcf5ef2aSThomas Huth FOP_PROTO(eq)
148fcf5ef2aSThomas Huth FOP_PROTO(ueq)
149fcf5ef2aSThomas Huth FOP_PROTO(olt)
150fcf5ef2aSThomas Huth FOP_PROTO(ult)
151fcf5ef2aSThomas Huth FOP_PROTO(ole)
152fcf5ef2aSThomas Huth FOP_PROTO(ule)
153fcf5ef2aSThomas Huth FOP_PROTO(sf)
154fcf5ef2aSThomas Huth FOP_PROTO(ngle)
155fcf5ef2aSThomas Huth FOP_PROTO(seq)
156fcf5ef2aSThomas Huth FOP_PROTO(ngl)
157fcf5ef2aSThomas Huth FOP_PROTO(lt)
158fcf5ef2aSThomas Huth FOP_PROTO(nge)
159fcf5ef2aSThomas Huth FOP_PROTO(le)
160fcf5ef2aSThomas Huth FOP_PROTO(ngt)
161fcf5ef2aSThomas Huth #undef FOP_PROTO
162fcf5ef2aSThomas Huth 
163fcf5ef2aSThomas Huth #define FOP_PROTO(op) \
164fcf5ef2aSThomas Huth DEF_HELPER_3(r6_cmp_d_ ## op, i64, env, i64, i64) \
165fcf5ef2aSThomas Huth DEF_HELPER_3(r6_cmp_s_ ## op, i32, env, i32, i32)
166fcf5ef2aSThomas Huth FOP_PROTO(af)
167fcf5ef2aSThomas Huth FOP_PROTO(un)
168fcf5ef2aSThomas Huth FOP_PROTO(eq)
169fcf5ef2aSThomas Huth FOP_PROTO(ueq)
170fcf5ef2aSThomas Huth FOP_PROTO(lt)
171fcf5ef2aSThomas Huth FOP_PROTO(ult)
172fcf5ef2aSThomas Huth FOP_PROTO(le)
173fcf5ef2aSThomas Huth FOP_PROTO(ule)
174fcf5ef2aSThomas Huth FOP_PROTO(saf)
175fcf5ef2aSThomas Huth FOP_PROTO(sun)
176fcf5ef2aSThomas Huth FOP_PROTO(seq)
177fcf5ef2aSThomas Huth FOP_PROTO(sueq)
178fcf5ef2aSThomas Huth FOP_PROTO(slt)
179fcf5ef2aSThomas Huth FOP_PROTO(sult)
180fcf5ef2aSThomas Huth FOP_PROTO(sle)
181fcf5ef2aSThomas Huth FOP_PROTO(sule)
182fcf5ef2aSThomas Huth FOP_PROTO(or)
183fcf5ef2aSThomas Huth FOP_PROTO(une)
184fcf5ef2aSThomas Huth FOP_PROTO(ne)
185fcf5ef2aSThomas Huth FOP_PROTO(sor)
186fcf5ef2aSThomas Huth FOP_PROTO(sune)
187fcf5ef2aSThomas Huth FOP_PROTO(sne)
188fcf5ef2aSThomas Huth #undef FOP_PROTO
189fcf5ef2aSThomas Huth 
190fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_cpunum, tl, env)
191fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_synci_step, tl, env)
192fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_cc, tl, env)
193fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_ccres, tl, env)
194fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_performance, tl, env)
195fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_xnp, tl, env)
196fcf5ef2aSThomas Huth DEF_HELPER_2(pmon, void, env, int)
197fcf5ef2aSThomas Huth DEF_HELPER_1(wait, void, env)
198fcf5ef2aSThomas Huth 
199*03afdc28SJiaxun Yang #ifdef TARGET_MIPS64
200*03afdc28SJiaxun Yang DEF_HELPER_FLAGS_2(lcsr_cpucfg, TCG_CALL_NO_RWG_SE, tl, env, tl)
201*03afdc28SJiaxun Yang #endif
202*03afdc28SJiaxun Yang 
203fcf5ef2aSThomas Huth /* Loongson multimedia functions.  */
204fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
205fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddush, TCG_CALL_NO_RWG_SE, i64, i64, i64)
206fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
207fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
208fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddsb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
209fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddusb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
210fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
211fcf5ef2aSThomas Huth 
212fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
213fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubush, TCG_CALL_NO_RWG_SE, i64, i64, i64)
214fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
215fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
216fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubsb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
217fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubusb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
218fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
219fcf5ef2aSThomas Huth 
220fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pshufh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
221fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packsswh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
222fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packsshb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
223fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packushb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
224fcf5ef2aSThomas Huth 
225fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpcklhw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
226fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpckhhw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
227fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpcklbh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
228fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpckhbh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
229fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpcklwd, TCG_CALL_NO_RWG_SE, i64, i64, i64)
230fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpckhwd, TCG_CALL_NO_RWG_SE, i64, i64, i64)
231fcf5ef2aSThomas Huth 
232fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pavgh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
233fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pavgb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
234fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmaxsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
235fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pminsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
236fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmaxub, TCG_CALL_NO_RWG_SE, i64, i64, i64)
237fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pminub, TCG_CALL_NO_RWG_SE, i64, i64, i64)
238fcf5ef2aSThomas Huth 
239fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpeqw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
240fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpgtw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
241fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpeqh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
242fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpgth, TCG_CALL_NO_RWG_SE, i64, i64, i64)
243fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpeqb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
244fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpgtb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
245fcf5ef2aSThomas Huth 
246fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psllw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
247fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psllh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
248fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psrlw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
249fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psrlh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
250fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psraw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
251fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psrah, TCG_CALL_NO_RWG_SE, i64, i64, i64)
252fcf5ef2aSThomas Huth 
253fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmullh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
254fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmulhh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
255fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmulhuh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
256fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmaddhw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
257fcf5ef2aSThomas Huth 
258fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pasubub, TCG_CALL_NO_RWG_SE, i64, i64, i64)
259fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(biadd, TCG_CALL_NO_RWG_SE, i64, i64)
260fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(pmovmskb, TCG_CALL_NO_RWG_SE, i64, i64)
261fcf5ef2aSThomas Huth 
262fcf5ef2aSThomas Huth /*** MIPS DSP ***/
263fcf5ef2aSThomas Huth /* DSP Arithmetic Sub-class insns */
264fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_ph, 0, tl, tl, tl, env)
265fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_ph, 0, tl, tl, tl, env)
266fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
267fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_qh, 0, tl, tl, tl, env)
268fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_qh, 0, tl, tl, tl, env)
269fcf5ef2aSThomas Huth #endif
270fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_w, 0, tl, tl, tl, env)
271fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
272fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_pw, 0, tl, tl, tl, env)
273fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_pw, 0, tl, tl, tl, env)
274fcf5ef2aSThomas Huth #endif
275fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_qb, 0, tl, tl, tl, env)
276fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_qb, 0, tl, tl, tl, env)
277fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
278fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
279fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_ph, 0, tl, tl, tl, env)
280fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_ph, 0, tl, tl, tl, env)
281fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
282fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
283fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl)
284fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl)
285fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
286fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_ob, 0, tl, tl, tl, env)
287fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_ob, 0, tl, tl, tl, env)
288fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
289fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
290fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_qh, 0, tl, tl, tl, env)
291fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_qh, 0, tl, tl, tl, env)
292fcf5ef2aSThomas Huth #endif
293fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_ph, 0, tl, tl, tl, env)
294fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_ph, 0, tl, tl, tl, env)
295fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
296fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_qh, 0, tl, tl, tl, env)
297fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_qh, 0, tl, tl, tl, env)
298fcf5ef2aSThomas Huth #endif
299fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_w, 0, tl, tl, tl, env)
300fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
301fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_pw, 0, tl, tl, tl, env)
302fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_pw, 0, tl, tl, tl, env)
303fcf5ef2aSThomas Huth #endif
304fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_qb, 0, tl, tl, tl, env)
305fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_qb, 0, tl, tl, tl, env)
306fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
307fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
308fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_ph, 0, tl, tl, tl, env)
309fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_ph, 0, tl, tl, tl, env)
310fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
311fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
312fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl)
313fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl)
314fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
315fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_ob, 0, tl, tl, tl, env)
316fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_ob, 0, tl, tl, tl, env)
317fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
318fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
319fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_qh, 0, tl, tl, tl, env)
320fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_qh, 0, tl, tl, tl, env)
321fcf5ef2aSThomas Huth #endif
322fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addsc, 0, tl, tl, tl, env)
323fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addwc, 0, tl, tl, tl, env)
324fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(modsub, TCG_CALL_NO_RWG_SE, tl, tl, tl)
325fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(raddu_w_qb, TCG_CALL_NO_RWG_SE, tl, tl)
326fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
327fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(raddu_l_ob, TCG_CALL_NO_RWG_SE, tl, tl)
328fcf5ef2aSThomas Huth #endif
329fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_qb, 0, tl, tl, env)
330fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_ph, 0, tl, tl, env)
331fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_w, 0, tl, tl, env)
332fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
333fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_ob, 0, tl, tl, env)
334fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_qh, 0, tl, tl, env)
335fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_pw, 0, tl, tl, env)
336fcf5ef2aSThomas Huth #endif
337fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precr_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
338fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
339fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_ph_w, TCG_CALL_NO_RWG_SE,
340fcf5ef2aSThomas Huth                    tl, i32, tl, tl)
341fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_r_ph_w, TCG_CALL_NO_RWG_SE,
342fcf5ef2aSThomas Huth                    tl, i32, tl, tl)
343fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_ph_w, TCG_CALL_NO_RWG_SE, tl, tl, tl)
344fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrq_rs_ph_w, 0, tl, tl, tl, env)
345fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
346fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precr_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl)
347fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_qh_pw,
348fcf5ef2aSThomas Huth                    TCG_CALL_NO_RWG_SE, tl, tl, tl, i32)
349fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_r_qh_pw,
350fcf5ef2aSThomas Huth                    TCG_CALL_NO_RWG_SE, tl, tl, tl, i32)
351fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl)
352fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_qh_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl)
353fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrq_rs_qh_pw,
354fcf5ef2aSThomas Huth                    TCG_CALL_NO_RWG_SE, tl, tl, tl, env)
355fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_pw_l, TCG_CALL_NO_RWG_SE, tl, tl, tl)
356fcf5ef2aSThomas Huth #endif
357fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrqu_s_qb_ph, 0, tl, tl, tl, env)
358fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
359fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrqu_s_ob_qh,
360fcf5ef2aSThomas Huth                    TCG_CALL_NO_RWG_SE, tl, tl, tl, env)
361fcf5ef2aSThomas Huth 
362fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhl, TCG_CALL_NO_RWG_SE, tl, tl)
363fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhr, TCG_CALL_NO_RWG_SE, tl, tl)
364fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhla, TCG_CALL_NO_RWG_SE, tl, tl)
365fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhra, TCG_CALL_NO_RWG_SE, tl, tl)
366fcf5ef2aSThomas Huth #endif
367fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl)
368fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl)
369fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl)
370fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl)
371fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
372fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl)
373fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl)
374fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl)
375fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl)
376fcf5ef2aSThomas Huth #endif
377fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl)
378fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl)
379fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl)
380fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl)
381fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
382fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl)
383fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl)
384fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl)
385fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl)
386fcf5ef2aSThomas Huth #endif
387fcf5ef2aSThomas Huth 
388fcf5ef2aSThomas Huth /* DSP GPR-Based Shift Sub-class insns */
389fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_qb, 0, tl, tl, tl, env)
390fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
391fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_ob, 0, tl, tl, tl, env)
392fcf5ef2aSThomas Huth #endif
393fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_ph, 0, tl, tl, tl, env)
394fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_ph, 0, tl, tl, tl, env)
395fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
396fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_qh, 0, tl, tl, tl, env)
397fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_qh, 0, tl, tl, tl, env)
398fcf5ef2aSThomas Huth #endif
399fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_w, 0, tl, tl, tl, env)
400fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
401fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_pw, 0, tl, tl, tl, env)
402fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_pw, 0, tl, tl, tl, env)
403fcf5ef2aSThomas Huth #endif
404fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
405fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
406fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
407fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
408fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl)
409fcf5ef2aSThomas Huth #endif
410fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
411fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
412fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
413fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
414fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
415fcf5ef2aSThomas Huth #endif
416fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
417fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
418fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl)
419fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
420fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl)
421fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl)
422fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl)
423fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl)
424fcf5ef2aSThomas Huth #endif
425fcf5ef2aSThomas Huth 
426fcf5ef2aSThomas Huth /* DSP Multiply Sub-class insns */
427fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_ph_qbl, 0, tl, tl, tl, env)
428fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_ph_qbr, 0, tl, tl, tl, env)
429fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
430fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_qh_obl, 0, tl, tl, tl, env)
431fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_qh_obr, 0, tl, tl, tl, env)
432fcf5ef2aSThomas Huth #endif
433fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_rs_ph, 0, tl, tl, tl, env)
434fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
435fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_rs_qh, 0, tl, tl, tl, env)
436fcf5ef2aSThomas Huth #endif
437fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_w_phl, 0, tl, tl, tl, env)
438fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_w_phr, 0, tl, tl, tl, env)
439fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
440fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_pw_qhl, 0, tl, tl, tl, env)
441fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_pw_qhr, 0, tl, tl, tl, env)
442fcf5ef2aSThomas Huth #endif
443fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_qbl, 0, void, i32, tl, tl, env)
444fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_qbr, 0, void, i32, tl, tl, env)
445fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
446fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_obl, 0, void, tl, tl, i32, env)
447fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_obr, 0, void, tl, tl, i32, env)
448fcf5ef2aSThomas Huth #endif
449fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_qbl, 0, void, i32, tl, tl, env)
450fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_qbr, 0, void, i32, tl, tl, env)
451fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
452fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_obl, 0, void, tl, tl, i32, env)
453fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_obr, 0, void, tl, tl, i32, env)
454fcf5ef2aSThomas Huth #endif
455fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpa_w_ph, 0, void, i32, tl, tl, env)
456fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
457fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpa_w_qh, 0, void, tl, tl, i32, env)
458fcf5ef2aSThomas Huth #endif
459fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpax_w_ph, 0, void, i32, tl, tl, env)
460fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_s_w_ph, 0, void, i32, tl, tl, env)
461fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
462fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_s_w_qh, 0, void, tl, tl, i32, env)
463fcf5ef2aSThomas Huth #endif
464fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaqx_s_w_ph, 0, void, i32, tl, tl, env)
465fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaqx_sa_w_ph, 0, void, i32, tl, tl, env)
466fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dps_w_ph, 0, void, i32, tl, tl, env)
467fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
468fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dps_w_qh, 0, void, tl, tl, i32, env)
469fcf5ef2aSThomas Huth #endif
470fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsx_w_ph, 0, void, i32, tl, tl, env)
471fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_s_w_ph, 0, void, i32, tl, tl, env)
472fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
473fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_s_w_qh, 0, void, tl, tl, i32, env)
474fcf5ef2aSThomas Huth #endif
475fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsqx_s_w_ph, 0, void, i32, tl, tl, env)
476fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsqx_sa_w_ph, 0, void, i32, tl, tl, env)
477fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsaq_s_w_ph, 0, void, i32, tl, tl, env)
478fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
479fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsaq_s_w_qh, 0, void, tl, tl, i32, env)
480fcf5ef2aSThomas Huth #endif
481fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_sa_l_w, 0, void, i32, tl, tl, env)
482fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
483fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_sa_l_pw, 0, void, tl, tl, i32, env)
484fcf5ef2aSThomas Huth #endif
485fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_sa_l_w, 0, void, i32, tl, tl, env)
486fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
487fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_sa_l_pw, 0, void, tl, tl, i32, env)
488fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsaq_s_l_pw, 0, void, tl, tl, i32, env)
489fcf5ef2aSThomas Huth #endif
490fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_phl, 0, void, i32, tl, tl, env)
491fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_phr, 0, void, i32, tl, tl, env)
492fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_phl, 0, void, i32, tl, tl, env)
493fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_phr, 0, void, i32, tl, tl, env)
494fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mul_ph, 0, tl, tl, tl, env)
495fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mul_s_ph, 0, tl, tl, tl, env)
496fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_s_ph, 0, tl, tl, tl, env)
497fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_s_w, 0, tl, tl, tl, env)
498fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_rs_w, 0, tl, tl, tl, env)
499fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsa_w_ph, 0, void, i32, tl, tl, env)
500fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
501fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhll, 0, void, tl, tl, i32, env)
502fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhlr, 0, void, tl, tl, i32, env)
503fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhrl, 0, void, tl, tl, i32, env)
504fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhrr, 0, void, tl, tl, i32, env)
505fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhll, 0, void, tl, tl, i32, env)
506fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhlr, 0, void, tl, tl, i32, env)
507fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhrl, 0, void, tl, tl, i32, env)
508fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhrr, 0, void, tl, tl, i32, env)
509fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_l_pwl, 0, void, tl, tl, i32, env)
510fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_l_pwr, 0, void, tl, tl, i32, env)
511fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmadd, 0, void, tl, tl, i32, env)
512fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmaddu, 0, void, tl, tl, i32, env)
513fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmsub, 0, void, tl, tl, i32, env)
514fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmsubu, 0, void, tl, tl, i32, env)
515fcf5ef2aSThomas Huth #endif
516fcf5ef2aSThomas Huth 
517fcf5ef2aSThomas Huth /* DSP Bit/Manipulation Sub-class insns */
518fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(bitrev, TCG_CALL_NO_RWG_SE, tl, tl)
519fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(insv, 0, tl, env, tl, tl)
520fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
521fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dinsv, 0, tl, env, tl, tl)
522fcf5ef2aSThomas Huth #endif
523fcf5ef2aSThomas Huth 
524fcf5ef2aSThomas Huth /* DSP Compare-Pick Sub-class insns */
525fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_eq_qb, 0, void, tl, tl, env)
526fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_lt_qb, 0, void, tl, tl, env)
527fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_le_qb, 0, void, tl, tl, env)
528fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_eq_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
529fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_lt_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
530fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_le_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl)
531fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_eq_ph, 0, void, tl, tl, env)
532fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_lt_ph, 0, void, tl, tl, env)
533fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_le_ph, 0, void, tl, tl, env)
534fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
535fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_eq_ob, 0, void, tl, tl, env)
536fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_lt_ob, 0, void, tl, tl, env)
537fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_le_ob, 0, void, tl, tl, env)
538fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpgdu_eq_ob, 0, tl, tl, tl, env)
539fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpgdu_lt_ob, 0, tl, tl, tl, env)
540fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpgdu_le_ob, 0, tl, tl, tl, env)
541fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_eq_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
542fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_lt_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
543fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_le_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl)
544fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_eq_qh, 0, void, tl, tl, env)
545fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_lt_qh, 0, void, tl, tl, env)
546fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_le_qh, 0, void, tl, tl, env)
547fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_eq_pw, 0, void, tl, tl, env)
548fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_lt_pw, 0, void, tl, tl, env)
549fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_le_pw, 0, void, tl, tl, env)
550fcf5ef2aSThomas Huth #endif
551fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_qb, 0, tl, tl, tl, env)
552fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_ph, 0, tl, tl, tl, env)
553fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
554fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_ob, 0, tl, tl, tl, env)
555fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_qh, 0, tl, tl, tl, env)
556fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_pw, 0, tl, tl, tl, env)
557fcf5ef2aSThomas Huth #endif
558fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl)
559fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
560fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packrl_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl)
561fcf5ef2aSThomas Huth #endif
562fcf5ef2aSThomas Huth 
563fcf5ef2aSThomas Huth /* DSP Accumulator and DSPControl Access Sub-class insns */
564fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_w, 0, tl, tl, tl, env)
565fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_r_w, 0, tl, tl, tl, env)
566fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_rs_w, 0, tl, tl, tl, env)
567fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
568fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_w, 0, tl, tl, tl, env)
569fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_r_w, 0, tl, tl, tl, env)
570fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_rs_w, 0, tl, tl, tl, env)
571fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_l, 0, tl, tl, tl, env)
572fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_r_l, 0, tl, tl, tl, env)
573fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_rs_l, 0, tl, tl, tl, env)
574fcf5ef2aSThomas Huth #endif
575fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_s_h, 0, tl, tl, tl, env)
576fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
577fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_s_h, 0, tl, tl, tl, env)
578fcf5ef2aSThomas Huth #endif
579fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extp, 0, tl, tl, tl, env)
580fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extpdp, 0, tl, tl, tl, env)
581fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
582fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextp, 0, tl, tl, tl, env)
583fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextpdp, 0, tl, tl, tl, env)
584fcf5ef2aSThomas Huth #endif
585fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shilo, 0, void, tl, tl, env)
586fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
587fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dshilo, 0, void, tl, tl, env)
588fcf5ef2aSThomas Huth #endif
589fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mthlip, 0, void, tl, tl, env)
590fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64)
591fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dmthlip, 0, void, tl, tl, env)
592fcf5ef2aSThomas Huth #endif
593fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(wrdsp, 0, void, tl, tl, env)
594fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(rddsp, 0, tl, tl, env)
595fcf5ef2aSThomas Huth 
596ad520a97SPhilippe Mathieu-Daudé #ifndef CONFIG_USER_ONLY
597ad520a97SPhilippe Mathieu-Daudé #include "tcg/sysemu_helper.h.inc"
598ad520a97SPhilippe Mathieu-Daudé #endif /* !CONFIG_USER_ONLY */
599ad520a97SPhilippe Mathieu-Daudé 
600a2b0a27dSPhilippe Mathieu-Daudé #include "tcg/msa_helper.h.inc"
60107565cbfSPhilippe Mathieu-Daudé 
60207565cbfSPhilippe Mathieu-Daudé /* Vendor extensions */
60307565cbfSPhilippe Mathieu-Daudé #include "tcg/vr54xx_helper.h.inc"
604