| //- 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(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_MEM_NODETYPE(GLOBAL_GET) | 
 | HANDLE_MEM_NODETYPE(GLOBAL_SET) | 
 | HANDLE_MEM_NODETYPE(TABLE_GET) | 
 | HANDLE_MEM_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) |