| //- WebAssemblyISD.def - WebAssembly ISD ---------------------------*- C++ -*-// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| /// |
| /// \file |
| /// This file describes the various WebAssembly ISD node types. |
| /// |
| //===----------------------------------------------------------------------===// |
| |
| // NOTE: NO INCLUDE GUARD DESIRED! |
| |
| HANDLE_NODETYPE(CALL) |
| HANDLE_NODETYPE(RET_CALL) |
| HANDLE_NODETYPE(RETURN) |
| HANDLE_NODETYPE(ARGUMENT) |
| HANDLE_NODETYPE(LOCAL_GET) |
| HANDLE_NODETYPE(LOCAL_SET) |
| // A wrapper node for TargetExternalSymbol, TargetGlobalAddress, and MCSymbol |
| HANDLE_NODETYPE(Wrapper) |
| // A special node for TargetGlobalAddress used in PIC code for |
| // __memory_base/__table_base relative access. |
| HANDLE_NODETYPE(WrapperREL) |
| HANDLE_NODETYPE(BR_IF) |
| HANDLE_NODETYPE(BR_TABLE) |
| HANDLE_NODETYPE(DOT) |
| HANDLE_NODETYPE(SHUFFLE) |
| HANDLE_NODETYPE(SWIZZLE) |
| HANDLE_NODETYPE(VEC_SHL) |
| HANDLE_NODETYPE(VEC_SHR_S) |
| HANDLE_NODETYPE(VEC_SHR_U) |
| HANDLE_NODETYPE(NARROW_U) |
| HANDLE_NODETYPE(EXTEND_LOW_S) |
| HANDLE_NODETYPE(EXTEND_LOW_U) |
| HANDLE_NODETYPE(EXTEND_HIGH_S) |
| HANDLE_NODETYPE(EXTEND_HIGH_U) |
| HANDLE_NODETYPE(CONVERT_LOW_S) |
| HANDLE_NODETYPE(CONVERT_LOW_U) |
| HANDLE_NODETYPE(PROMOTE_LOW) |
| HANDLE_NODETYPE(TRUNC_SAT_ZERO_S) |
| HANDLE_NODETYPE(TRUNC_SAT_ZERO_U) |
| HANDLE_NODETYPE(DEMOTE_ZERO) |
| HANDLE_NODETYPE(I64_ADD128) |
| HANDLE_NODETYPE(I64_SUB128) |
| HANDLE_NODETYPE(I64_MUL_WIDE_S) |
| HANDLE_NODETYPE(I64_MUL_WIDE_U) |
| |
| // Memory intrinsics |
| HANDLE_NODETYPE(GLOBAL_GET) |
| HANDLE_NODETYPE(GLOBAL_SET) |
| HANDLE_NODETYPE(TABLE_GET) |
| HANDLE_NODETYPE(TABLE_SET) |
| |
| // Bulk memory instructions. These follow LLVM's expected semantics of |
| // supporting out-of-bounds pointers if the length is zero, by inserting |
| // a branch around Wasm's `memory.copy` and `memory.fill`, which would |
| // otherwise trap. |
| HANDLE_NODETYPE(MEMCPY) |
| HANDLE_NODETYPE(MEMSET) |