summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Gohman <dan433584@gmail.com>2015-10-02 20:20:01 +0000
committerDan Gohman <dan433584@gmail.com>2015-10-02 20:20:01 +0000
commit266b38ab565c46c5cf7fcc6e106d98d7f7256ff7 (patch)
tree2de3c4fd3f01b200f0e70a9b2a64f0c3cc625caa
parentbaba8c648b5b57e16a8e8f1b3c7142b8725c3bb6 (diff)
downloadbcm5719-llvm-266b38ab565c46c5cf7fcc6e106d98d7f7256ff7.tar.gz
bcm5719-llvm-266b38ab565c46c5cf7fcc6e106d98d7f7256ff7.zip
[WebAssembly] Add a __builtin_wasm_resize_memory() intrinsic.
llvm-svn: 249179
-rw-r--r--clang/include/clang/Basic/BuiltinsWebAssembly.def1
-rw-r--r--clang/lib/CodeGen/CGBuiltin.cpp5
-rw-r--r--clang/test/CodeGen/builtins-wasm.c6
3 files changed, 12 insertions, 0 deletions
diff --git a/clang/include/clang/Basic/BuiltinsWebAssembly.def b/clang/include/clang/Basic/BuiltinsWebAssembly.def
index 060d5548e4f..2f48d5d2b19 100644
--- a/clang/include/clang/Basic/BuiltinsWebAssembly.def
+++ b/clang/include/clang/Basic/BuiltinsWebAssembly.def
@@ -18,5 +18,6 @@
BUILTIN(__builtin_wasm_page_size, "z", "nc")
BUILTIN(__builtin_wasm_memory_size, "z", "nc")
+BUILTIN(__builtin_wasm_resize_memory, "vz", "n")
#undef BUILTIN
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index ff2cef9b02c..1de59d568d2 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -7053,6 +7053,11 @@ Value *CodeGenFunction::EmitWebAssemblyBuiltinExpr(unsigned BuiltinID,
Value *Callee = CGM.getIntrinsic(Intrinsic::wasm_memory_size, ResultType);
return Builder.CreateCall(Callee);
}
+ case WebAssembly::BI__builtin_wasm_resize_memory: {
+ Value *X = EmitScalarExpr(E->getArg(0));
+ Value *Callee = CGM.getIntrinsic(Intrinsic::wasm_resize_memory, X->getType());
+ return Builder.CreateCall(Callee, X);
+ }
default:
return nullptr;
diff --git a/clang/test/CodeGen/builtins-wasm.c b/clang/test/CodeGen/builtins-wasm.c
index d8da8d73a27..2de08c71c83 100644
--- a/clang/test/CodeGen/builtins-wasm.c
+++ b/clang/test/CodeGen/builtins-wasm.c
@@ -14,3 +14,9 @@ __SIZE_TYPE__ f1(void) {
// WEBASSEMBLY32: call {{i.*}} @llvm.wasm.memory.size.i32()
// WEBASSEMBLY64: call {{i.*}} @llvm.wasm.memory.size.i64()
}
+
+void f2(long delta) {
+ __builtin_wasm_resize_memory(delta);
+// WEBASSEMBLY32: call void @llvm.wasm.resize.memory.i32(i32 %{{.*}})
+// WEBASSEMBLY64: call void @llvm.wasm.resize.memory.i64(i64 %{{.*}})
+}
OpenPOWER on IntegriCloud