14 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_MCTARGETDESC_WEBASSEMBLYMCTARGETDESC_H
15 #define LLVM_LIB_TARGET_WEBASSEMBLY_MCTARGETDESC_WEBASSEMBLYMCTARGETDESC_H
17 #include "../WebAssemblySubtarget.h"
28 class MCObjectTargetWriter;
35 std::unique_ptr<MCObjectTargetWriter>
38 namespace WebAssembly {
83 namespace WebAssemblyII {
121 #define GET_REGINFO_ENUM
122 #include "WebAssemblyGenRegisterInfo.inc"
126 #define GET_INSTRINFO_ENUM
127 #include "WebAssemblyGenInstrInfo.inc"
130 namespace WebAssembly {
133 static const unsigned Nop = 0x01;
134 static const unsigned End = 0x0b;
139 #define WASM_LOAD_STORE(NAME) \
140 case WebAssembly::NAME##_A32: \
141 case WebAssembly::NAME##_A64: \
142 case WebAssembly::NAME##_A32_S: \
143 case WebAssembly::NAME##_A64_S:
263 #undef WASM_LOAD_STORE
276 case WebAssembly::ARGUMENT_i32:
277 case WebAssembly::ARGUMENT_i32_S:
278 case WebAssembly::ARGUMENT_i64:
279 case WebAssembly::ARGUMENT_i64_S:
280 case WebAssembly::ARGUMENT_f32:
281 case WebAssembly::ARGUMENT_f32_S:
282 case WebAssembly::ARGUMENT_f64:
283 case WebAssembly::ARGUMENT_f64_S:
284 case WebAssembly::ARGUMENT_v16i8:
285 case WebAssembly::ARGUMENT_v16i8_S:
286 case WebAssembly::ARGUMENT_v8i16:
287 case WebAssembly::ARGUMENT_v8i16_S:
288 case WebAssembly::ARGUMENT_v4i32:
289 case WebAssembly::ARGUMENT_v4i32_S:
290 case WebAssembly::ARGUMENT_v2i64:
291 case WebAssembly::ARGUMENT_v2i64_S:
292 case WebAssembly::ARGUMENT_v4f32:
293 case WebAssembly::ARGUMENT_v4f32_S:
294 case WebAssembly::ARGUMENT_v2f64:
295 case WebAssembly::ARGUMENT_v2f64_S:
296 case WebAssembly::ARGUMENT_funcref:
297 case WebAssembly::ARGUMENT_funcref_S:
298 case WebAssembly::ARGUMENT_externref:
299 case WebAssembly::ARGUMENT_externref_S:
308 case WebAssembly::COPY_I32:
309 case WebAssembly::COPY_I32_S:
310 case WebAssembly::COPY_I64:
311 case WebAssembly::COPY_I64_S:
312 case WebAssembly::COPY_F32:
313 case WebAssembly::COPY_F32_S:
314 case WebAssembly::COPY_F64:
315 case WebAssembly::COPY_F64_S:
316 case WebAssembly::COPY_V128:
317 case WebAssembly::COPY_V128_S:
318 case WebAssembly::COPY_FUNCREF:
319 case WebAssembly::COPY_FUNCREF_S:
320 case WebAssembly::COPY_EXTERNREF:
321 case WebAssembly::COPY_EXTERNREF_S:
330 case WebAssembly::TEE_I32:
331 case WebAssembly::TEE_I32_S:
332 case WebAssembly::TEE_I64:
333 case WebAssembly::TEE_I64_S:
334 case WebAssembly::TEE_F32:
335 case WebAssembly::TEE_F32_S:
336 case WebAssembly::TEE_F64:
337 case WebAssembly::TEE_F64_S:
338 case WebAssembly::TEE_V128:
339 case WebAssembly::TEE_V128_S:
340 case WebAssembly::TEE_FUNCREF:
341 case WebAssembly::TEE_FUNCREF_S:
342 case WebAssembly::TEE_EXTERNREF:
343 case WebAssembly::TEE_EXTERNREF_S:
353 case WebAssembly::CALL_S:
354 case WebAssembly::RET_CALL:
355 case WebAssembly::RET_CALL_S:
364 case WebAssembly::CALL_INDIRECT:
365 case WebAssembly::CALL_INDIRECT_S:
366 case WebAssembly::RET_CALL_INDIRECT:
367 case WebAssembly::RET_CALL_INDIRECT_S:
375 switch (
MI.getOpcode()) {
376 case WebAssembly::BR_TABLE_I32:
377 case WebAssembly::BR_TABLE_I32_S:
378 case WebAssembly::BR_TABLE_I64:
379 case WebAssembly::BR_TABLE_I64_S:
388 case WebAssembly::BLOCK:
389 case WebAssembly::BLOCK_S:
391 case WebAssembly::END_BLOCK_S:
393 case WebAssembly::LOOP_S:
394 case WebAssembly::END_LOOP:
395 case WebAssembly::END_LOOP_S:
396 case WebAssembly::TRY:
397 case WebAssembly::TRY_S:
398 case WebAssembly::END_TRY:
399 case WebAssembly::END_TRY_S:
408 case WebAssembly::CATCH:
409 case WebAssembly::CATCH_S:
410 case WebAssembly::CATCH_ALL:
411 case WebAssembly::CATCH_ALL_S: