]> granicus.if.org Git - llvm/commitdiff
[WebAssembly] Update grow_memory's return type.
authorDan Gohman <dan433584@gmail.com>
Wed, 18 Jan 2017 01:02:45 +0000 (01:02 +0000)
committerDan Gohman <dan433584@gmail.com>
Wed, 18 Jan 2017 01:02:45 +0000 (01:02 +0000)
The grow_memory instruction now returns the previous memory size. Add the
return type to the LLVM intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292322 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/IntrinsicsWebAssembly.td
lib/Target/WebAssembly/WebAssemblyInstrMemory.td
test/CodeGen/WebAssembly/memory-addr32.ll

index 4234c466d9732f7504d3e40363e3c2ebc29cf9e1..3a0957dfa39bc894124a2d5373fe97aab67ffe3a 100644 (file)
@@ -17,6 +17,6 @@ let TargetPrefix = "wasm" in {  // All intrinsics start with "llvm.wasm.".
 // Note that current_memory is not IntrNoMem because it must be sequenced with
 // respect to grow_memory calls.
 def int_wasm_current_memory : Intrinsic<[llvm_anyint_ty], [], [IntrReadMem]>;
-def int_wasm_grow_memory : Intrinsic<[], [llvm_anyint_ty], []>;
+def int_wasm_grow_memory : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>], []>;
 
 }
index b606ebb0a68d1d2bf9f6a42cadfd36fc2d9a144d..25d77bb1f234315291e70b449a2b4e5ff08d8caa 100644 (file)
@@ -673,9 +673,9 @@ def CURRENT_MEMORY_I32 : I<(outs I32:$dst), (ins i32imm:$flags),
                          Requires<[HasAddr32]>;
 
 // Grow memory.
-def GROW_MEMORY_I32 : I<(outs), (ins i32imm:$flags, I32:$delta),
+def GROW_MEMORY_I32 : I<(outs I32:$dst), (ins i32imm:$flags, I32:$delta),
                         [],
-                        "grow_memory\t$delta", 0x40>,
+                        "grow_memory\t$dst, $delta", 0x40>,
                       Requires<[HasAddr32]>;
 
 } // Defs = [ARGUMENTS]
index 583201b15f99f85344647584d3f4c8439386ccf1..bd11b818319558bb3bd3d2b15a9bc30b010d35ec 100644 (file)
@@ -6,7 +6,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
 target triple = "wasm32-unknown-unknown"
 
 declare i32 @llvm.wasm.current.memory.i32() nounwind readonly
-declare void @llvm.wasm.grow.memory.i32(i32) nounwind
+declare i32 @llvm.wasm.grow.memory.i32(i32) nounwind
 
 ; CHECK-LABEL: current_memory:
 ; CHECK-NEXT: .result i32{{$}}
@@ -19,9 +19,10 @@ define i32 @current_memory() {
 
 ; CHECK-LABEL: grow_memory:
 ; CHECK-NEXT: .param i32{{$}}
-; CHECK: grow_memory $0{{$}}
-; CHECK-NEXT: return{{$}}
-define void @grow_memory(i32 %n) {
-  call void @llvm.wasm.grow.memory.i32(i32 %n)
-  ret void
+; CHECK-NEXT: .result i32{{$}}
+; CHECK: grow_memory $push0=, $0{{$}}
+; CHECK-NEXT: return $pop0{{$}}
+define i32 @grow_memory(i32 %n) {
+  %a = call i32 @llvm.wasm.grow.memory.i32(i32 %n)
+  ret i32 %a
 }