[WebAssembly] Add mem.* intrinsics.
The grow_memory and current_memory instructions are expected to be
officially renamed to mem.grow and mem.size. Introduce new intrinsics
with the new names. These new names aren't yet official, so for now,
use them at your own risk.
Also, take this opportunity to add arguments for the currently unused
immediate field in those instructions.
llvm-svn: 323222
diff --git a/llvm/test/CodeGen/WebAssembly/memory-addr32.ll b/llvm/test/CodeGen/WebAssembly/memory-addr32.ll
index ad599b1..2d1f0f5 100644
--- a/llvm/test/CodeGen/WebAssembly/memory-addr32.ll
+++ b/llvm/test/CodeGen/WebAssembly/memory-addr32.ll
@@ -5,9 +5,30 @@
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown-wasm"
+declare i32 @llvm.wasm.mem.size.i32(i32) nounwind readonly
+declare i32 @llvm.wasm.mem.grow.i32(i32, i32) nounwind
declare i32 @llvm.wasm.current.memory.i32() nounwind readonly
declare i32 @llvm.wasm.grow.memory.i32(i32) nounwind
+; CHECK-LABEL: mem_size:
+; CHECK-NEXT: .result i32{{$}}
+; CHECK-NEXT: mem.size $push0=, 0{{$}}
+; CHECK-NEXT: return $pop0{{$}}
+define i32 @mem_size() {
+ %a = call i32 @llvm.wasm.mem.size.i32(i32 0)
+ ret i32 %a
+}
+
+; CHECK-LABEL: mem_grow:
+; CHECK-NEXT: .param i32{{$}}
+; CHECK-NEXT: .result i32{{$}}
+; CHECK: mem.grow $push0=, 0, $0{{$}}
+; CHECK-NEXT: return $pop0{{$}}
+define i32 @mem_grow(i32 %n) {
+ %a = call i32 @llvm.wasm.mem.grow.i32(i32 0, i32 %n)
+ ret i32 %a
+}
+
; CHECK-LABEL: current_memory:
; CHECK-NEXT: .result i32{{$}}
; CHECK-NEXT: current_memory $push0={{$}}