Files
archived-llvm/test/CodeGen/WebAssembly/memory-addr32.ll
Dan Gohman ecb7ca8228 [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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323222 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-23 17:02:02 +00:00

50 lines
1.5 KiB
LLVM

; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -disable-wasm-explicit-locals | FileCheck %s
; Test that basic memory operations assemble as expected with 32-bit addresses.
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={{$}}
; CHECK-NEXT: return $pop0{{$}}
define i32 @current_memory() {
%a = call i32 @llvm.wasm.current.memory.i32()
ret i32 %a
}
; CHECK-LABEL: grow_memory:
; CHECK-NEXT: .param i32{{$}}
; 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
}