Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit 97c35d1

Browse files
author
Dan Gohman
committed
[WebAssembly] Update grow_memory's return type.
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
1 parent c1fa073 commit 97c35d1

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

include/llvm/IR/IntrinsicsWebAssembly.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ let TargetPrefix = "wasm" in { // All intrinsics start with "llvm.wasm.".
1717
// Note that current_memory is not IntrNoMem because it must be sequenced with
1818
// respect to grow_memory calls.
1919
def int_wasm_current_memory : Intrinsic<[llvm_anyint_ty], [], [IntrReadMem]>;
20-
def int_wasm_grow_memory : Intrinsic<[], [llvm_anyint_ty], []>;
20+
def int_wasm_grow_memory : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>], []>;
2121

2222
}

lib/Target/WebAssembly/WebAssemblyInstrMemory.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,9 +673,9 @@ def CURRENT_MEMORY_I32 : I<(outs I32:$dst), (ins i32imm:$flags),
673673
Requires<[HasAddr32]>;
674674

675675
// Grow memory.
676-
def GROW_MEMORY_I32 : I<(outs), (ins i32imm:$flags, I32:$delta),
676+
def GROW_MEMORY_I32 : I<(outs I32:$dst), (ins i32imm:$flags, I32:$delta),
677677
[],
678-
"grow_memory\t$delta", 0x40>,
678+
"grow_memory\t$dst, $delta", 0x40>,
679679
Requires<[HasAddr32]>;
680680

681681
} // Defs = [ARGUMENTS]

test/CodeGen/WebAssembly/memory-addr32.ll

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
66
target triple = "wasm32-unknown-unknown"
77

88
declare i32 @llvm.wasm.current.memory.i32() nounwind readonly
9-
declare void @llvm.wasm.grow.memory.i32(i32) nounwind
9+
declare i32 @llvm.wasm.grow.memory.i32(i32) nounwind
1010

1111
; CHECK-LABEL: current_memory:
1212
; CHECK-NEXT: .result i32{{$}}
@@ -19,9 +19,10 @@ define i32 @current_memory() {
1919

2020
; CHECK-LABEL: grow_memory:
2121
; CHECK-NEXT: .param i32{{$}}
22-
; CHECK: grow_memory $0{{$}}
23-
; CHECK-NEXT: return{{$}}
24-
define void @grow_memory(i32 %n) {
25-
call void @llvm.wasm.grow.memory.i32(i32 %n)
26-
ret void
22+
; CHECK-NEXT: .result i32{{$}}
23+
; CHECK: grow_memory $push0=, $0{{$}}
24+
; CHECK-NEXT: return $pop0{{$}}
25+
define i32 @grow_memory(i32 %n) {
26+
%a = call i32 @llvm.wasm.grow.memory.i32(i32 %n)
27+
ret i32 %a
2728
}

0 commit comments

Comments
 (0)