Cranelift: Add instructions for getting the current stack/frame/return pointers (#4573)
* Cranelift: Add instructions for getting the current stack/frame pointers and return address This is the initial part of https://github.com/bytecodealliance/wasmtime/issues/4535 * x64: Remove `Amode::RbpOffset` and use `Amode::ImmReg` instead We just special case getting operands from `Amode`s now. * Fix s390x `get_return_address`; require `preserve_frame_pointers=true` * Assert that `Amode::ImmRegRegShift` doesn't use rbp/rsp * Handle non-allocatable registers in Amode::with_allocs * Use "stack" instead of "r15" on s390x * r14 is an allocatable register on s390x, so it shouldn't be used with `MovPReg`
This commit is contained in:
@@ -1697,6 +1697,7 @@
|
||||
|
||||
|
||||
;;;; Rules for `uunarrow` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (has_type (ty_vec128_int ty) (uunarrow x y)))
|
||||
(if (zero_value y))
|
||||
(uqxtn x (lane_size ty)))
|
||||
@@ -1733,3 +1734,14 @@
|
||||
|
||||
(rule (lower (debugtrap))
|
||||
(side_effect (brk)))
|
||||
|
||||
;;; Rules for `get_{frame,stack}_pointer` and `get_return_address` ;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (get_frame_pointer))
|
||||
(aarch64_fp))
|
||||
|
||||
(rule (lower (get_stack_pointer))
|
||||
(aarch64_sp))
|
||||
|
||||
(rule (lower (get_return_address))
|
||||
(aarch64_link))
|
||||
|
||||
Reference in New Issue
Block a user