1#[cfg(target_arch = "wasm32")]
3#[link(wasm_import_module = "asm")]
4#[allow(improper_ctypes)]
5extern "C" {
6 pub fn push_i8(val: i8);
8
9 pub fn push_u8(val: u8);
11
12 pub fn push_i16(val: i16);
14
15 pub fn push_u16(val: u16);
17
18 pub fn push_i32(val: i32);
20
21 pub fn push_u32(val: u32);
23
24 pub fn push_i64(val: i64);
26
27 pub fn push_u64(val: u64);
29
30 pub fn addmod_i8(a: i8, b: i8, n: i8) -> i8;
32 pub fn mulmod_i8(a: i8, b: i8, n: i8) -> i8;
34
35 pub fn addmod_i16(a: i16, b: i16, n: i16) -> i16;
37 pub fn mulmod_i16(a: i16, b: i16, n: i16) -> i16;
39
40 pub fn addmod_i32(a: i32, b: i32, n: i32) -> i32;
42 pub fn mulmod_i32(a: i32, b: i32, n: i32) -> i32;
44
45 pub fn addmod_i64(a: i64, b: i64, n: i64) -> i64;
47 pub fn mulmod_i64(a: i64, b: i64, n: i64) -> i64;
49
50 pub fn addmod_u8(a: u8, b: u8, n: u8) -> u8;
52 pub fn mulmod_u8(a: u8, b: u8, n: u8) -> u8;
54
55 pub fn addmod_u16(a: u16, b: u16, n: u16) -> u16;
57 pub fn mulmod_u16(a: u16, b: u16, n: u16) -> u16;
59
60 pub fn addmod_u32(a: u32, b: u32, n: u32) -> u32;
62 pub fn mulmod_u32(a: u32, b: u32, n: u32) -> u32;
64
65 pub fn addmod_u64(a: u64, b: u64, n: u64) -> u64;
67 pub fn mulmod_u64(a: u64, b: u64, n: u64) -> u64;
69
70 pub fn revert1(message: &'static str);
72
73 pub fn revert2(message: &'static str);
75
76 pub fn revert3(message: &'static str);
78
79 pub fn revert4(message: &'static str);
81
82 pub fn sload_i8() -> i8;
84
85 pub fn sload_u8() -> u8;
87
88 pub fn sload_i16() -> i16;
90
91 pub fn sload_u16() -> u16;
93
94 pub fn sload_i32() -> i32;
96
97 pub fn sload_u32() -> u32;
99
100 pub fn sload_i64() -> i64;
102
103 pub fn sload_u64() -> u64;
105
106 pub fn tload_i8() -> i8;
108
109 pub fn tload_u8() -> u8;
111
112 pub fn tload_i16() -> i16;
114
115 pub fn tload_u16() -> u16;
117
118 pub fn tload_i32() -> i32;
120
121 pub fn tload_u32() -> u32;
123
124 pub fn tload_i64() -> i64;
126
127 pub fn tload_u64() -> u64;
129
130 pub fn tstore_i8(val: i8);
132
133 pub fn tstore_u8(val: u8);
135
136 pub fn tstore_i16(val: i16);
138
139 pub fn tstore_u16(val: u16);
141
142 pub fn tstore_i32(val: i32);
144
145 pub fn tstore_u32(val: u32);
147
148 pub fn tstore_i64(val: i64);
150
151 pub fn tstore_u64(val: u64);
153}
154
155#[allow(clippy::module_inception)]
156#[cfg(not(target_arch = "wasm32"))]
157pub mod asm {
158 pub fn push_i8(_val: i8) {
159 unimplemented!("Only available in wasm32 target");
160 }
161
162 pub fn push_u8(_val: u8) {
163 unimplemented!("Only available in wasm32 target");
164 }
165
166 pub fn push_i16(_val: i16) {
167 unimplemented!("Only available in wasm32 target");
168 }
169
170 pub fn push_u16(_val: u16) {
171 unimplemented!("Only available in wasm32 target");
172 }
173
174 pub fn push_i32(_val: i32) {
175 unimplemented!("Only available in wasm32 target");
176 }
177
178 pub fn push_u32(_val: u32) {
179 unimplemented!("Only available in wasm32 target");
180 }
181
182 pub fn push_i64(_val: i64) {
183 unimplemented!("Only available in wasm32 target");
184 }
185
186 pub fn push_u64(_val: u64) {
187 unimplemented!("Only available in wasm32 target");
188 }
189
190 pub fn addmod_i8(_a: i8, _b: i8, _n: i8) -> i8 {
191 unimplemented!("Only available in wasm32 target");
192 }
193
194 pub fn mulmod_i8(_a: i8, _b: i8, _n: i8) -> i8 {
195 unimplemented!("Only available in wasm32 target");
196 }
197
198 pub fn addmod_i16(_a: i16, _b: i16, _n: i16) -> i16 {
199 unimplemented!("Only available in wasm32 target");
200 }
201
202 pub fn mulmod_i16(_a: i16, _b: i16, _n: i16) -> i16 {
203 unimplemented!("Only available in wasm32 target");
204 }
205
206 pub fn addmod_i32(_a: i32, _b: i32, _n: i32) -> i32 {
207 unimplemented!("Only available in wasm32 target");
208 }
209
210 pub fn mulmod_i32(_a: i32, _b: i32, _n: i32) -> i32 {
211 unimplemented!("Only available in wasm32 target");
212 }
213
214 pub fn addmod_i64(_a: i64, _b: i64, _n: i64) -> i64 {
215 unimplemented!("Only available in wasm32 target");
216 }
217
218 pub fn mulmod_i64(_a: i64, _b: i64, _n: i64) -> i64 {
219 unimplemented!("Only available in wasm32 target");
220 }
221
222 pub fn addmod_u8(_a: u8, _b: u8, _n: u8) -> u8 {
223 unimplemented!("Only available in wasm32 target");
224 }
225
226 pub fn mulmod_u8(_a: u8, _b: u8, _n: u8) -> u8 {
227 unimplemented!("Only available in wasm32 target");
228 }
229
230 pub fn addmod_u16(_a: u16, _b: u16, _n: u16) -> u16 {
231 unimplemented!("Only available in wasm32 target");
232 }
233
234 pub fn mulmod_u16(_a: u16, _b: u16, _n: u16) -> u16 {
235 unimplemented!("Only available in wasm32 target");
236 }
237
238 pub fn addmod_u32(_a: u32, _b: u32, _n: u32) -> u32 {
239 unimplemented!("Only available in wasm32 target");
240 }
241
242 pub fn mulmod_u32(_a: u32, _b: u32, _n: u32) -> u32 {
243 unimplemented!("Only available in wasm32 target");
244 }
245
246 pub fn addmod_u64(_a: u64, _b: u64, _n: u64) -> u64 {
247 unimplemented!("Only available in wasm32 target");
248 }
249
250 pub fn mulmod_u64(_a: u64, _b: u64, _n: u64) -> u64 {
251 unimplemented!("Only available in wasm32 target");
252 }
253
254 pub fn revert1(message: &'static str) {
255 panic!("Revert: {}", message);
256 }
257
258 pub fn revert2(_message: &'static str) {
259 panic!("Revert called");
260 }
261
262 pub fn revert3(_message: &'static str) {
263 panic!("Revert called");
264 }
265
266 pub fn revert4(_message: &'static str) {
267 panic!("Revert called");
268 }
269
270 pub fn sload(_slot: i32) -> i32 {
271 unimplemented!("Only available in wasm32 target");
272 }
273
274 pub fn sload_i8() -> i8 {
275 unimplemented!("Only available in wasm32 target");
276 }
277
278 pub fn sload_u8() -> u8 {
279 unimplemented!("Only available in wasm32 target");
280 }
281
282 pub fn sload_i16() -> i16 {
283 unimplemented!("Only available in wasm32 target");
284 }
285
286 pub fn sload_u16() -> u16 {
287 unimplemented!("Only available in wasm32 target");
288 }
289
290 pub fn sload_i32() -> i32 {
291 unimplemented!("Only available in wasm32 target");
292 }
293
294 pub fn sload_u32() -> u32 {
295 unimplemented!("Only available in wasm32 target");
296 }
297
298 pub fn sload_i64() -> i64 {
299 unimplemented!("Only available in wasm32 target");
300 }
301
302 pub fn sload_u64() -> u64 {
303 unimplemented!("Only available in wasm32 target");
304 }
305
306 pub fn sstore(_slot: i32, _value: i32) {
307 unimplemented!("Only available in wasm32 target");
308 }
309
310 pub fn tload(_slot: i32) -> i32 {
311 unimplemented!("Only available in wasm32 target");
312 }
313
314 pub fn tload_i8() -> i8 {
315 unimplemented!("Only available in wasm32 target");
316 }
317
318 pub fn tload_u8() -> u8 {
319 unimplemented!("Only available in wasm32 target");
320 }
321
322 pub fn tload_i16() -> i16 {
323 unimplemented!("Only available in wasm32 target");
324 }
325
326 pub fn tload_u16() -> u16 {
327 unimplemented!("Only available in wasm32 target");
328 }
329
330 pub fn tload_i32() -> i32 {
331 unimplemented!("Only available in wasm32 target");
332 }
333
334 pub fn tload_u32() -> u32 {
335 unimplemented!("Only available in wasm32 target");
336 }
337
338 pub fn tload_i64() -> i64 {
339 unimplemented!("Only available in wasm32 target");
340 }
341
342 pub fn tload_u64() -> u64 {
343 unimplemented!("Only available in wasm32 target");
344 }
345
346 pub fn tstore(_slot: i32, _value: i32) {
347 unimplemented!("Only available in wasm32 target");
348 }
349
350 pub fn tstore_i8(_val: i8) {
351 unimplemented!("Only available in wasm32 target");
352 }
353
354 pub fn tstore_u8(_val: u8) {
355 unimplemented!("Only available in wasm32 target");
356 }
357
358 pub fn tstore_i16(_val: i16) {
359 unimplemented!("Only available in wasm32 target");
360 }
361
362 pub fn tstore_u16(_val: i16) {
363 unimplemented!("Only available in wasm32 target");
364 }
365
366 pub fn tstore_i32(_val: i32) {
367 unimplemented!("Only available in wasm32 target");
368 }
369
370 pub fn tstore_u32(_val: u32) {
371 unimplemented!("Only available in wasm32 target");
372 }
373
374 pub fn tstore_i64(_val: i64) {
375 unimplemented!("Only available in wasm32 target");
376 }
377
378 pub fn tstore_u64(_val: u64) {
379 unimplemented!("Only available in wasm32 target");
380 }
381}
382
383#[cfg(not(target_arch = "wasm32"))]
384pub use asm::*;