Files
wasmtime/cranelift/filetests/isa/intel/legalize-memory.cton
Jakob Stoklund Olesen f2ebabaf5f Custom legalization for global_addr.
The code to compute the address of a global variable depends on the kind
of variable, so custom legalization is required.

- Add a legalizer::globalvar module which exposes an
  expand_global_addr() function. This module is likely to grow as we add
  more types of global variables.
- Add a ArgumentPurpose::VMContext enumerator. This is used to represent
  special 'vmctx' arguments that are used as base pointers for vmctx
  globals.
2017-08-18 10:08:06 -07:00

30 lines
556 B
Plaintext

; Test the legalization of memory objects.
test legalizer
set is_64bit
isa intel
; regex: V=v\d+
function %vmctx(i64 vmctx) -> i64 {
gv1 = vmctx-16
ebb1(v1: i64):
v2 = global_addr.i64 gv1
; check: $v2 = iadd_imm $v1, -16
return v2
; check: return $v2
}
function %deref(i64 vmctx) -> i64 {
gv1 = vmctx-16
gv2 = deref(gv1)+32
ebb1(v1: i64):
v2 = global_addr.i64 gv2
; check: $(a1=$V) = iadd_imm $v1, -16
; check: $(p1=$V) = load.i64 $a1
; check: $v2 = iadd_imm $p1, 32
return v2
; check: return $v2
}