mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
63b9852e95
Summary: Since wasm EH does not use landingpad instructions, these instructions provide exception pointer and selector values until we lower them in WasmEHPrepare. Reviewers: jgravelle-google Subscribers: jfb, sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D44930 llvm-svn: 328678
49 lines
2.2 KiB
TableGen
49 lines
2.2 KiB
TableGen
//===- IntrinsicsWebAssembly.td - Defines wasm intrinsics --*- tablegen -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// \file
|
|
/// \brief This file defines all of the WebAssembly-specific intrinsics.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
let TargetPrefix = "wasm" in { // All intrinsics start with "llvm.wasm.".
|
|
|
|
// Query the current memory size, and increase the current memory size.
|
|
// Note that mem.size is not IntrNoMem because it must be sequenced with
|
|
// respect to mem.grow calls.
|
|
// These are the new proposed names, which aren't yet official. Use at your own
|
|
// risk.
|
|
def int_wasm_mem_size : Intrinsic<[llvm_anyint_ty],
|
|
[llvm_i32_ty],
|
|
[IntrReadMem]>;
|
|
def int_wasm_mem_grow : Intrinsic<[llvm_anyint_ty],
|
|
[llvm_i32_ty, LLVMMatchType<0>],
|
|
[]>;
|
|
|
|
// These are the existing names, which are currently official, but expected
|
|
// to be deprecated in the future. They also lack the immediate field.
|
|
def int_wasm_current_memory : Intrinsic<[llvm_anyint_ty], [], [IntrReadMem]>;
|
|
def int_wasm_grow_memory : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>], []>;
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Exception handling intrinsics
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// throw / rethrow
|
|
def int_wasm_throw : Intrinsic<[], [llvm_i32_ty, llvm_ptr_ty],
|
|
[Throws, IntrNoReturn]>;
|
|
def int_wasm_rethrow : Intrinsic<[], [], [Throws, IntrNoReturn]>;
|
|
|
|
// Since wasm does not use landingpad instructions, these instructions return
|
|
// exception pointer and selector values until we lower them in WasmEHPrepare.
|
|
def int_wasm_get_exception : Intrinsic<[llvm_ptr_ty], [], [IntrHasSideEffects]>;
|
|
def int_wasm_get_ehselector : Intrinsic<[llvm_i32_ty], [],
|
|
[IntrHasSideEffects]>;
|
|
}
|