]>
Commit | Line | Data |
---|---|---|
944eea96 RH |
1 | DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) |
2 | DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) | |
3 | DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) | |
4 | DEF_HELPER_FLAGS_2(remu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) | |
96e132e2 | 5 | |
944eea96 RH |
6 | DEF_HELPER_FLAGS_2(div_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) |
7 | DEF_HELPER_FLAGS_2(rem_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) | |
8 | DEF_HELPER_FLAGS_2(divu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) | |
9 | DEF_HELPER_FLAGS_2(remu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) | |
31d66551 | 10 | |
944eea96 RH |
11 | DEF_HELPER_FLAGS_2(shl_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) |
12 | DEF_HELPER_FLAGS_2(shr_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) | |
13 | DEF_HELPER_FLAGS_2(sar_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) | |
96e132e2 | 14 | |
944eea96 RH |
15 | DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) |
16 | DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) | |
c482cb11 | 17 | |
0e28d006 RH |
18 | DEF_HELPER_FLAGS_2(clz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) |
19 | DEF_HELPER_FLAGS_2(ctz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) | |
20 | DEF_HELPER_FLAGS_2(clz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) | |
21 | DEF_HELPER_FLAGS_2(ctz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) | |
086920c2 RH |
22 | DEF_HELPER_FLAGS_1(clrsb_i32, TCG_CALL_NO_RWG_SE, i32, i32) |
23 | DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i64) | |
a768e4e9 RH |
24 | DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32) |
25 | DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64) | |
0e28d006 | 26 | |
7f11636d | 27 | DEF_HELPER_FLAGS_1(lookup_tb_ptr, TCG_CALL_NO_WG_SE, ptr, env) |
cedbcb01 | 28 | |
df79b996 RH |
29 | DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env) |
30 | ||
c482cb11 RH |
31 | #ifdef CONFIG_SOFTMMU |
32 | ||
33 | DEF_HELPER_FLAGS_5(atomic_cmpxchgb, TCG_CALL_NO_WG, | |
34 | i32, env, tl, i32, i32, i32) | |
35 | DEF_HELPER_FLAGS_5(atomic_cmpxchgw_be, TCG_CALL_NO_WG, | |
36 | i32, env, tl, i32, i32, i32) | |
c482cb11 RH |
37 | DEF_HELPER_FLAGS_5(atomic_cmpxchgw_le, TCG_CALL_NO_WG, |
38 | i32, env, tl, i32, i32, i32) | |
df79b996 RH |
39 | DEF_HELPER_FLAGS_5(atomic_cmpxchgl_be, TCG_CALL_NO_WG, |
40 | i32, env, tl, i32, i32, i32) | |
c482cb11 RH |
41 | DEF_HELPER_FLAGS_5(atomic_cmpxchgl_le, TCG_CALL_NO_WG, |
42 | i32, env, tl, i32, i32, i32) | |
df79b996 RH |
43 | #ifdef CONFIG_ATOMIC64 |
44 | DEF_HELPER_FLAGS_5(atomic_cmpxchgq_be, TCG_CALL_NO_WG, | |
45 | i64, env, tl, i64, i64, i32) | |
c482cb11 RH |
46 | DEF_HELPER_FLAGS_5(atomic_cmpxchgq_le, TCG_CALL_NO_WG, |
47 | i64, env, tl, i64, i64, i32) | |
df79b996 | 48 | #endif |
c482cb11 | 49 | |
df79b996 | 50 | #ifdef CONFIG_ATOMIC64 |
c482cb11 RH |
51 | #define GEN_ATOMIC_HELPERS(NAME) \ |
52 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ | |
53 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
54 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \ | |
55 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
56 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \ | |
57 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
58 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \ | |
59 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
60 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \ | |
61 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
62 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_le), \ | |
63 | TCG_CALL_NO_WG, i64, env, tl, i64, i32) \ | |
64 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_be), \ | |
65 | TCG_CALL_NO_WG, i64, env, tl, i64, i32) | |
df79b996 RH |
66 | #else |
67 | #define GEN_ATOMIC_HELPERS(NAME) \ | |
68 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ | |
69 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
70 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \ | |
71 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
72 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \ | |
73 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
74 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \ | |
75 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) \ | |
76 | DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \ | |
77 | TCG_CALL_NO_WG, i32, env, tl, i32, i32) | |
78 | #endif /* CONFIG_ATOMIC64 */ | |
c482cb11 RH |
79 | |
80 | #else | |
81 | ||
82 | DEF_HELPER_FLAGS_4(atomic_cmpxchgb, TCG_CALL_NO_WG, i32, env, tl, i32, i32) | |
83 | DEF_HELPER_FLAGS_4(atomic_cmpxchgw_be, TCG_CALL_NO_WG, i32, env, tl, i32, i32) | |
c482cb11 | 84 | DEF_HELPER_FLAGS_4(atomic_cmpxchgw_le, TCG_CALL_NO_WG, i32, env, tl, i32, i32) |
df79b996 | 85 | DEF_HELPER_FLAGS_4(atomic_cmpxchgl_be, TCG_CALL_NO_WG, i32, env, tl, i32, i32) |
c482cb11 | 86 | DEF_HELPER_FLAGS_4(atomic_cmpxchgl_le, TCG_CALL_NO_WG, i32, env, tl, i32, i32) |
df79b996 RH |
87 | #ifdef CONFIG_ATOMIC64 |
88 | DEF_HELPER_FLAGS_4(atomic_cmpxchgq_be, TCG_CALL_NO_WG, i64, env, tl, i64, i64) | |
c482cb11 | 89 | DEF_HELPER_FLAGS_4(atomic_cmpxchgq_le, TCG_CALL_NO_WG, i64, env, tl, i64, i64) |
df79b996 | 90 | #endif |
c482cb11 | 91 | |
df79b996 | 92 | #ifdef CONFIG_ATOMIC64 |
c482cb11 RH |
93 | #define GEN_ATOMIC_HELPERS(NAME) \ |
94 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), b), \ | |
95 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
96 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_le), \ | |
97 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
98 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_be), \ | |
99 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
100 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_le), \ | |
101 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
102 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_be), \ | |
103 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
104 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_le), \ | |
105 | TCG_CALL_NO_WG, i64, env, tl, i64) \ | |
106 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_be), \ | |
107 | TCG_CALL_NO_WG, i64, env, tl, i64) | |
df79b996 RH |
108 | #else |
109 | #define GEN_ATOMIC_HELPERS(NAME) \ | |
110 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), b), \ | |
111 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
112 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_le), \ | |
113 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
114 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_be), \ | |
115 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
116 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_le), \ | |
117 | TCG_CALL_NO_WG, i32, env, tl, i32) \ | |
118 | DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_be), \ | |
119 | TCG_CALL_NO_WG, i32, env, tl, i32) | |
120 | #endif /* CONFIG_ATOMIC64 */ | |
c482cb11 RH |
121 | |
122 | #endif /* CONFIG_SOFTMMU */ | |
123 | ||
124 | GEN_ATOMIC_HELPERS(fetch_add) | |
125 | GEN_ATOMIC_HELPERS(fetch_and) | |
126 | GEN_ATOMIC_HELPERS(fetch_or) | |
127 | GEN_ATOMIC_HELPERS(fetch_xor) | |
128 | ||
129 | GEN_ATOMIC_HELPERS(add_fetch) | |
130 | GEN_ATOMIC_HELPERS(and_fetch) | |
131 | GEN_ATOMIC_HELPERS(or_fetch) | |
132 | GEN_ATOMIC_HELPERS(xor_fetch) | |
133 | ||
134 | GEN_ATOMIC_HELPERS(xchg) | |
135 | ||
136 | #undef GEN_ATOMIC_HELPERS | |
db432672 RH |
137 | |
138 | DEF_HELPER_FLAGS_3(gvec_mov, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
139 | ||
140 | DEF_HELPER_FLAGS_3(gvec_dup8, TCG_CALL_NO_RWG, void, ptr, i32, i32) | |
141 | DEF_HELPER_FLAGS_3(gvec_dup16, TCG_CALL_NO_RWG, void, ptr, i32, i32) | |
142 | DEF_HELPER_FLAGS_3(gvec_dup32, TCG_CALL_NO_RWG, void, ptr, i32, i32) | |
143 | DEF_HELPER_FLAGS_3(gvec_dup64, TCG_CALL_NO_RWG, void, ptr, i32, i64) | |
144 | ||
145 | DEF_HELPER_FLAGS_4(gvec_add8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
146 | DEF_HELPER_FLAGS_4(gvec_add16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
147 | DEF_HELPER_FLAGS_4(gvec_add32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
148 | DEF_HELPER_FLAGS_4(gvec_add64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
149 | ||
150 | DEF_HELPER_FLAGS_4(gvec_sub8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
151 | DEF_HELPER_FLAGS_4(gvec_sub16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
152 | DEF_HELPER_FLAGS_4(gvec_sub32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
153 | DEF_HELPER_FLAGS_4(gvec_sub64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
154 | ||
3774030a RH |
155 | DEF_HELPER_FLAGS_4(gvec_mul8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) |
156 | DEF_HELPER_FLAGS_4(gvec_mul16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
157 | DEF_HELPER_FLAGS_4(gvec_mul32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
158 | DEF_HELPER_FLAGS_4(gvec_mul64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
159 | ||
f49b12c6 RH |
160 | DEF_HELPER_FLAGS_4(gvec_ssadd8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) |
161 | DEF_HELPER_FLAGS_4(gvec_ssadd16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
162 | DEF_HELPER_FLAGS_4(gvec_ssadd32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
163 | DEF_HELPER_FLAGS_4(gvec_ssadd64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
164 | ||
165 | DEF_HELPER_FLAGS_4(gvec_sssub8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
166 | DEF_HELPER_FLAGS_4(gvec_sssub16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
167 | DEF_HELPER_FLAGS_4(gvec_sssub32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
168 | DEF_HELPER_FLAGS_4(gvec_sssub64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
169 | ||
170 | DEF_HELPER_FLAGS_4(gvec_usadd8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
171 | DEF_HELPER_FLAGS_4(gvec_usadd16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
172 | DEF_HELPER_FLAGS_4(gvec_usadd32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
173 | DEF_HELPER_FLAGS_4(gvec_usadd64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
174 | ||
175 | DEF_HELPER_FLAGS_4(gvec_ussub8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
176 | DEF_HELPER_FLAGS_4(gvec_ussub16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
177 | DEF_HELPER_FLAGS_4(gvec_ussub32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
178 | DEF_HELPER_FLAGS_4(gvec_ussub64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
179 | ||
db432672 RH |
180 | DEF_HELPER_FLAGS_3(gvec_neg8, TCG_CALL_NO_RWG, void, ptr, ptr, i32) |
181 | DEF_HELPER_FLAGS_3(gvec_neg16, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
182 | DEF_HELPER_FLAGS_3(gvec_neg32, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
183 | DEF_HELPER_FLAGS_3(gvec_neg64, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
184 | ||
185 | DEF_HELPER_FLAGS_3(gvec_not, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
186 | DEF_HELPER_FLAGS_4(gvec_and, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
187 | DEF_HELPER_FLAGS_4(gvec_or, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
188 | DEF_HELPER_FLAGS_4(gvec_xor, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
189 | DEF_HELPER_FLAGS_4(gvec_andc, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
190 | DEF_HELPER_FLAGS_4(gvec_orc, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
d0ec9796 RH |
191 | |
192 | DEF_HELPER_FLAGS_3(gvec_shl8i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
193 | DEF_HELPER_FLAGS_3(gvec_shl16i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
194 | DEF_HELPER_FLAGS_3(gvec_shl32i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
195 | DEF_HELPER_FLAGS_3(gvec_shl64i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
196 | ||
197 | DEF_HELPER_FLAGS_3(gvec_shr8i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
198 | DEF_HELPER_FLAGS_3(gvec_shr16i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
199 | DEF_HELPER_FLAGS_3(gvec_shr32i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
200 | DEF_HELPER_FLAGS_3(gvec_shr64i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
201 | ||
202 | DEF_HELPER_FLAGS_3(gvec_sar8i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
203 | DEF_HELPER_FLAGS_3(gvec_sar16i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
204 | DEF_HELPER_FLAGS_3(gvec_sar32i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
205 | DEF_HELPER_FLAGS_3(gvec_sar64i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) | |
212be173 RH |
206 | |
207 | DEF_HELPER_FLAGS_4(gvec_eq8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
208 | DEF_HELPER_FLAGS_4(gvec_eq16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
209 | DEF_HELPER_FLAGS_4(gvec_eq32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
210 | DEF_HELPER_FLAGS_4(gvec_eq64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
211 | ||
212 | DEF_HELPER_FLAGS_4(gvec_ne8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
213 | DEF_HELPER_FLAGS_4(gvec_ne16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
214 | DEF_HELPER_FLAGS_4(gvec_ne32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
215 | DEF_HELPER_FLAGS_4(gvec_ne64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
216 | ||
217 | DEF_HELPER_FLAGS_4(gvec_lt8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
218 | DEF_HELPER_FLAGS_4(gvec_lt16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
219 | DEF_HELPER_FLAGS_4(gvec_lt32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
220 | DEF_HELPER_FLAGS_4(gvec_lt64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
221 | ||
222 | DEF_HELPER_FLAGS_4(gvec_le8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
223 | DEF_HELPER_FLAGS_4(gvec_le16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
224 | DEF_HELPER_FLAGS_4(gvec_le32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
225 | DEF_HELPER_FLAGS_4(gvec_le64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
226 | ||
227 | DEF_HELPER_FLAGS_4(gvec_ltu8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
228 | DEF_HELPER_FLAGS_4(gvec_ltu16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
229 | DEF_HELPER_FLAGS_4(gvec_ltu32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
230 | DEF_HELPER_FLAGS_4(gvec_ltu64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
231 | ||
232 | DEF_HELPER_FLAGS_4(gvec_leu8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
233 | DEF_HELPER_FLAGS_4(gvec_leu16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
234 | DEF_HELPER_FLAGS_4(gvec_leu32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) | |
235 | DEF_HELPER_FLAGS_4(gvec_leu64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) |