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();
65 IsPtr ? State.AllocateReg(AddrRegList) : State.AllocateReg(DataRegList);
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.
LLVM_ABI CCState(CallingConv::ID CC, bool IsVarArg, MachineFunction &MF, SmallVectorImpl< CCValAssign > &Locs, LLVMContext &Context, bool NegativeOffsets=false)
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...
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
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