mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Change TargetLowering::getTypeForExtArgOrReturn to take and return
MVTs, instead of EVTs. Accordingly, add bitsLT (and similar) to MVT. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169850 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1d367e9bcc
commit
47fd10f2fc
@ -389,6 +389,27 @@ namespace llvm {
|
||||
return getStoreSize() * 8;
|
||||
}
|
||||
|
||||
/// Return true if this has more bits than VT.
|
||||
bool bitsGT(MVT VT) const {
|
||||
return getSizeInBits() > VT.getSizeInBits();
|
||||
}
|
||||
|
||||
/// Return true if this has no less bits than VT.
|
||||
bool bitsGE(MVT VT) const {
|
||||
return getSizeInBits() >= VT.getSizeInBits();
|
||||
}
|
||||
|
||||
/// Return true if this has less bits than VT.
|
||||
bool bitsLT(MVT VT) const {
|
||||
return getSizeInBits() < VT.getSizeInBits();
|
||||
}
|
||||
|
||||
/// Return true if this has no more bits than VT.
|
||||
bool bitsLE(MVT VT) const {
|
||||
return getSizeInBits() <= VT.getSizeInBits();
|
||||
}
|
||||
|
||||
|
||||
static MVT getFloatingPointVT(unsigned BitWidth) {
|
||||
switch (BitWidth) {
|
||||
default:
|
||||
|
@ -1446,9 +1446,9 @@ public:
|
||||
/// but this is not true all the time, e.g. i1 on x86-64. It is also not
|
||||
/// necessary for non-C calling conventions. The frontend should handle this
|
||||
/// and include all of the necessary information.
|
||||
virtual EVT getTypeForExtArgOrReturn(LLVMContext &Context, EVT VT,
|
||||
virtual MVT getTypeForExtArgOrReturn(LLVMContext &Context, MVT VT,
|
||||
ISD::NodeType /*ExtendKind*/) const {
|
||||
EVT MinVT = getRegisterType(Context, MVT::i32);
|
||||
MVT MinVT = getRegisterType(Context, MVT::i32);
|
||||
return VT.bitsLT(MinVT) ? MinVT : VT;
|
||||
}
|
||||
|
||||
|
@ -1239,7 +1239,8 @@ void SelectionDAGBuilder::visitRet(const ReturnInst &I) {
|
||||
ExtendKind = ISD::ZERO_EXTEND;
|
||||
|
||||
if (ExtendKind != ISD::ANY_EXTEND && VT.isInteger())
|
||||
VT = TLI.getTypeForExtArgOrReturn(*DAG.getContext(), VT, ExtendKind);
|
||||
VT = TLI.getTypeForExtArgOrReturn(*DAG.getContext(),
|
||||
VT.getSimpleVT(), ExtendKind);
|
||||
|
||||
unsigned NumParts = TLI.getNumRegisters(*DAG.getContext(), VT);
|
||||
MVT PartVT = TLI.getRegisterType(*DAG.getContext(), VT);
|
||||
|
@ -1689,8 +1689,8 @@ bool X86TargetLowering::isUsedByReturnOnly(SDNode *N, SDValue &Chain) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
EVT
|
||||
X86TargetLowering::getTypeForExtArgOrReturn(LLVMContext &Context, EVT VT,
|
||||
MVT
|
||||
X86TargetLowering::getTypeForExtArgOrReturn(LLVMContext &Context, MVT VT,
|
||||
ISD::NodeType ExtendKind) const {
|
||||
MVT ReturnMVT;
|
||||
// TODO: Is this also valid on 32-bit?
|
||||
@ -1699,7 +1699,7 @@ X86TargetLowering::getTypeForExtArgOrReturn(LLVMContext &Context, EVT VT,
|
||||
else
|
||||
ReturnMVT = MVT::i32;
|
||||
|
||||
EVT MinVT = getRegisterType(Context, ReturnMVT);
|
||||
MVT MinVT = getRegisterType(Context, ReturnMVT);
|
||||
return VT.bitsLT(MinVT) ? MinVT : VT;
|
||||
}
|
||||
|
||||
|
@ -859,8 +859,8 @@ namespace llvm {
|
||||
|
||||
virtual bool mayBeEmittedAsTailCall(CallInst *CI) const;
|
||||
|
||||
virtual EVT
|
||||
getTypeForExtArgOrReturn(LLVMContext &Context, EVT VT,
|
||||
virtual MVT
|
||||
getTypeForExtArgOrReturn(LLVMContext &Context, MVT VT,
|
||||
ISD::NodeType ExtendKind) const;
|
||||
|
||||
virtual bool
|
||||
|
Loading…
Reference in New Issue
Block a user