Update clang to r339409.
Change-Id: I800772d2d838223be1f6b40d490c4591b937fca2
diff --git a/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td b/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td
index e9e5e53..c94972c 100644
--- a/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td
+++ b/linux-x64/clang/include/llvm/IR/IntrinsicsWebAssembly.td
@@ -8,17 +8,23 @@
//===----------------------------------------------------------------------===//
///
/// \file
-/// \brief This file defines all of the WebAssembly-specific intrinsics.
+/// 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.
+// Note that memory.size is not IntrNoMem because it must be sequenced with
+// respect to memory.grow calls.
+def int_wasm_memory_size : Intrinsic<[llvm_anyint_ty],
+ [llvm_i32_ty],
+ [IntrReadMem]>;
+def int_wasm_memory_grow : Intrinsic<[llvm_anyint_ty],
+ [llvm_i32_ty, LLVMMatchType<0>],
+ []>;
+
+// These are the old names.
def int_wasm_mem_size : Intrinsic<[llvm_anyint_ty],
[llvm_i32_ty],
[IntrReadMem]>;
@@ -26,8 +32,7 @@
[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.
+// These are the old old names. 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>], []>;
@@ -42,7 +47,44 @@
// 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], [],
+def int_wasm_get_exception : Intrinsic<[llvm_ptr_ty], [llvm_token_ty],
+ [IntrHasSideEffects]>;
+def int_wasm_get_ehselector : Intrinsic<[llvm_i32_ty], [llvm_token_ty],
[IntrHasSideEffects]>;
+
+// wasm.catch returns the pointer to the exception object caught by wasm 'catch'
+// instruction.
+def int_wasm_catch : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty],
+ [IntrHasSideEffects]>;
+
+// WebAssembly EH must maintain the landingpads in the order assigned to them
+// by WasmEHPrepare pass to generate landingpad table in EHStreamer. This is
+// used in order to give them the indices in WasmEHPrepare.
+def int_wasm_landingpad_index: Intrinsic<[], [llvm_i32_ty], [IntrNoMem]>;
+
+// Returns LSDA address of the current function.
+def int_wasm_lsda : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
+
+//===----------------------------------------------------------------------===//
+// Atomic intrinsics
+//===----------------------------------------------------------------------===//
+
+// wait / notify
+def int_wasm_atomic_wait_i32 :
+ Intrinsic<[llvm_i32_ty],
+ [LLVMPointerType<llvm_i32_ty>, llvm_i32_ty, llvm_i64_ty],
+ [IntrInaccessibleMemOrArgMemOnly, ReadOnly<0>, NoCapture<0>,
+ IntrHasSideEffects],
+ "", [SDNPMemOperand]>;
+def int_wasm_atomic_wait_i64 :
+ Intrinsic<[llvm_i32_ty],
+ [LLVMPointerType<llvm_i64_ty>, llvm_i64_ty, llvm_i64_ty],
+ [IntrInaccessibleMemOrArgMemOnly, ReadOnly<0>, NoCapture<0>,
+ IntrHasSideEffects],
+ "", [SDNPMemOperand]>;
+def int_wasm_atomic_notify:
+ Intrinsic<[llvm_i64_ty], [LLVMPointerType<llvm_i32_ty>, llvm_i64_ty],
+ [IntrInaccessibleMemOnly, NoCapture<0>, IntrHasSideEffects], "",
+ [SDNPMemOperand]>;
+
}