15#ifndef LLVM_LIB_TARGET_M68K_M68KCALLINGCONV_H
16#define LLVM_LIB_TARGET_M68K_M68KCALLINGCONV_H
43 static const MCPhysReg DataRegList[] = {M68k::D0, M68k::D1, M68k::A0,
55 auto I = ArgTypes.begin(),
End = ArgTypes.end();
57 while (
No > 0 &&
I !=
End) {
58 No -= (*I)->isIntegerTy(64) ? 2 : 1;
62 bool IsPtr =
I !=
End && (*I)->isPointerTy();
This file provides M68k specific target descriptions.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
CCState - This class holds information needed while lowering arguments and return values.
MCRegister AllocateReg(MCPhysReg Reg)
AllocateReg - Attempt to allocate one register.
void addLoc(const CCValAssign &V)
static CCValAssign getReg(unsigned ValNo, MVT ValVT, MCRegister Reg, MVT LocVT, LocInfo HTP, bool IsCustom=false)
This is an important class for using LLVM in a threaded context.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
bool CC_M68k_Any_AssignToReg(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
NOTE this function is used to select registers for formal arguments and call FIXME: Handling on point...
Custom state to propagate llvm type info to register CC assigner.
M68kCCState(ArrayRef< Type * > ArgTypes, CallingConv::ID CC, bool IsVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &Locs, LLVMContext &C)
ArrayRef< Type * > ArgTypeList