mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-19 02:25:01 +00:00
X86 call instructions can take variable number of operands. Parameters of
vector types are passed via XMM registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28789 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -438,11 +438,12 @@ let isCall = 1, noResults = 1 in
|
|||||||
// All calls clobber the non-callee saved registers...
|
// All calls clobber the non-callee saved registers...
|
||||||
let Defs = [EAX, ECX, EDX, FP0, FP1, FP2, FP3, FP4, FP5, FP6, ST0,
|
let Defs = [EAX, ECX, EDX, FP0, FP1, FP2, FP3, FP4, FP5, FP6, ST0,
|
||||||
XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7] in {
|
XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7] in {
|
||||||
def CALLpcrel32 : I<0xE8, RawFrm, (ops i32imm:$dst), "call ${dst:call}",
|
def CALLpcrel32 : I<0xE8, RawFrm, (ops i32imm:$dst, variable_ops),
|
||||||
[]>;
|
"call ${dst:call}", []>;
|
||||||
def CALL32r : I<0xFF, MRM2r, (ops GR32:$dst), "call {*}$dst",
|
def CALL32r : I<0xFF, MRM2r, (ops GR32:$dst, variable_ops),
|
||||||
[(X86call GR32:$dst)]>;
|
"call {*}$dst", [(X86call GR32:$dst)]>;
|
||||||
def CALL32m : I<0xFF, MRM2m, (ops i32mem:$dst), "call {*}$dst", []>;
|
def CALL32m : I<0xFF, MRM2m, (ops i32mem:$dst, variable_ops),
|
||||||
|
"call {*}$dst", []>;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tail call stuff.
|
// Tail call stuff.
|
||||||
|
Reference in New Issue
Block a user