Skip to content

Commit

Permalink
[WebAssembly] Update grow_memory's return type.
Browse files Browse the repository at this point in the history
The grow_memory instruction now returns the previous memory size. Add the
return type to the LLVM intrinsic.

llvm-svn: 292322
  • Loading branch information
Dan Gohman committed Jan 18, 2017
1 parent de5fea2 commit 73e3aaa
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 9 deletions.
2 changes: 1 addition & 1 deletion llvm/include/llvm/IR/IntrinsicsWebAssembly.td
Original file line number Diff line number Diff line change
Expand Up @@ -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>], []>;

}
4 changes: 2 additions & 2 deletions llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
13 changes: 7 additions & 6 deletions llvm/test/CodeGen/WebAssembly/memory-addr32.ll
Original file line number Diff line number Diff line change
Expand Up @@ -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{{$}}
Expand All @@ -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
}

0 comments on commit 73e3aaa

Please sign in to comment.