mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-18 06:38:41 +00:00
Add markers in the asm file for tail calls, add a new ADJSTACKPTRri
sorta-pseudo-instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22042 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4fc997941d
commit
1e9448bce8
@ -191,13 +191,23 @@ let isCall = 1 in
|
|||||||
def CALL32m : I<0xFF, MRM2m, (ops i32mem:$dst), "call {*}$dst">;
|
def CALL32m : I<0xFF, MRM2m, (ops i32mem:$dst), "call {*}$dst">;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tail call stuff.
|
||||||
let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1 in
|
let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1 in
|
||||||
def TAILJMPd : IBr<0xE9, (ops calltarget:$dst), "jmp $dst">;
|
def TAILJMPd : IBr<0xE9, (ops calltarget:$dst), "jmp $dst # TAIL CALL">;
|
||||||
let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1 in
|
let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1 in
|
||||||
def TAILJMPr : I<0xFF, MRM4r, (ops R32:$dst), "jmp {*}$dst">;
|
def TAILJMPr : I<0xFF, MRM4r, (ops R32:$dst), "jmp {*}$dst # TAIL CALL">;
|
||||||
let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1 in
|
let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1 in
|
||||||
def TAILJMPm : I<0xFF, MRM4m, (ops i32mem:$dst), "jmp {*}$dst">;
|
def TAILJMPm : I<0xFF, MRM4m, (ops i32mem:$dst), "jmp {*}$dst # TAIL CALL">;
|
||||||
|
|
||||||
|
// ADJSTACKPTRri - This is a standard ADD32ri instruction, identical in every
|
||||||
|
// way, except that it is marked as being a terminator. This causes the epilog
|
||||||
|
// inserter to insert reloads of callee saved registers BEFORE this. We need
|
||||||
|
// this until we have a more accurate way of tracking where the stack pointer is
|
||||||
|
// within a function.
|
||||||
|
let isTerminator = 1, isTwoAddress = 1 in
|
||||||
|
def ADJSTACKPTRri : Ii32<0x81, MRM0r, (ops R32:$dst, R32:$src1, i32imm:$src2),
|
||||||
|
"add{l} {$src2, $dst|$dst, $src2}">;
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Miscellaneous Instructions...
|
// Miscellaneous Instructions...
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user