forked from OSchip/llvm-project
Change AsmOperandInfo::ConstraintVT to MVT, instead of EVT.
Accordingly, add MVT::getVT. llvm-svn: 170550
This commit is contained in:
parent
85bd73d259
commit
f9934613e8
|
@ -499,6 +499,12 @@ namespace llvm {
|
|||
}
|
||||
return (MVT::SimpleValueType)(MVT::INVALID_SIMPLE_VALUE_TYPE);
|
||||
}
|
||||
|
||||
/// Return the value type corresponding to the specified type. This returns
|
||||
/// all pointers as iPTR. If HandleUnknown is true, unknown types are
|
||||
/// returned as Other, otherwise they are invalid.
|
||||
static MVT getVT(Type *Ty, bool HandleUnknown = false);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1555,7 +1555,7 @@ public:
|
|||
Value *CallOperandVal;
|
||||
|
||||
/// ConstraintVT - The ValueType for the operand value.
|
||||
EVT ConstraintVT;
|
||||
MVT ConstraintVT;
|
||||
|
||||
/// isMatchingInputConstraint - Return true of this is an input operand that
|
||||
/// is a matching constraint like "4".
|
||||
|
|
|
@ -5842,7 +5842,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
|||
ConstraintOperands.push_back(SDISelAsmOperandInfo(TargetConstraints[i]));
|
||||
SDISelAsmOperandInfo &OpInfo = ConstraintOperands.back();
|
||||
|
||||
EVT OpVT = MVT::Other;
|
||||
MVT OpVT = MVT::Other;
|
||||
|
||||
// Compute the value type for each operand.
|
||||
switch (OpInfo.Type) {
|
||||
|
@ -5857,10 +5857,10 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
|||
// corresponding argument.
|
||||
assert(!CS.getType()->isVoidTy() && "Bad inline asm!");
|
||||
if (StructType *STy = dyn_cast<StructType>(CS.getType())) {
|
||||
OpVT = TLI.getValueType(STy->getElementType(ResNo));
|
||||
OpVT = TLI.getSimpleValueType(STy->getElementType(ResNo));
|
||||
} else {
|
||||
assert(ResNo == 0 && "Asm only has one result!");
|
||||
OpVT = TLI.getValueType(CS.getType());
|
||||
OpVT = TLI.getSimpleValueType(CS.getType());
|
||||
}
|
||||
++ResNo;
|
||||
break;
|
||||
|
@ -5881,7 +5881,8 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCallSite CS) {
|
|||
OpInfo.CallOperand = getValue(OpInfo.CallOperandVal);
|
||||
}
|
||||
|
||||
OpVT = OpInfo.getCallOperandValEVT(*DAG.getContext(), TLI, TD);
|
||||
OpVT = OpInfo.getCallOperandValEVT(*DAG.getContext(), TLI, TD).
|
||||
getSimpleVT();
|
||||
}
|
||||
|
||||
OpInfo.ConstraintVT = OpVT;
|
||||
|
|
|
@ -2935,10 +2935,10 @@ TargetLowering::AsmOperandInfoVector TargetLowering::ParseConstraints(
|
|||
assert(!CS.getType()->isVoidTy() &&
|
||||
"Bad inline asm!");
|
||||
if (StructType *STy = dyn_cast<StructType>(CS.getType())) {
|
||||
OpInfo.ConstraintVT = getValueType(STy->getElementType(ResNo));
|
||||
OpInfo.ConstraintVT = getSimpleValueType(STy->getElementType(ResNo));
|
||||
} else {
|
||||
assert(ResNo == 0 && "Asm only has one result!");
|
||||
OpInfo.ConstraintVT = getValueType(CS.getType());
|
||||
OpInfo.ConstraintVT = getSimpleValueType(CS.getType());
|
||||
}
|
||||
++ResNo;
|
||||
break;
|
||||
|
@ -2977,14 +2977,14 @@ TargetLowering::AsmOperandInfoVector TargetLowering::ParseConstraints(
|
|||
case 64:
|
||||
case 128:
|
||||
OpInfo.ConstraintVT =
|
||||
EVT::getEVT(IntegerType::get(OpTy->getContext(), BitSize), true);
|
||||
MVT::getVT(IntegerType::get(OpTy->getContext(), BitSize), true);
|
||||
break;
|
||||
}
|
||||
} else if (PointerType *PT = dyn_cast<PointerType>(OpTy)) {
|
||||
OpInfo.ConstraintVT = MVT::getIntegerVT(
|
||||
8*TD->getPointerSize(PT->getAddressSpace()));
|
||||
} else {
|
||||
OpInfo.ConstraintVT = EVT::getEVT(OpTy, true);
|
||||
OpInfo.ConstraintVT = MVT::getVT(OpTy, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -219,10 +219,10 @@ Type *EVT::getTypeForEVT(LLVMContext &Context) const {
|
|||
}
|
||||
}
|
||||
|
||||
/// getEVT - Return the value type corresponding to the specified type. This
|
||||
/// returns all pointers as MVT::iPTR. If HandleUnknown is true, unknown types
|
||||
/// are returned as Other, otherwise they are invalid.
|
||||
EVT EVT::getEVT(Type *Ty, bool HandleUnknown){
|
||||
/// Return the value type corresponding to the specified type. This returns all
|
||||
/// pointers as MVT::iPTR. If HandleUnknown is true, unknown types are returned
|
||||
/// as Other, otherwise they are invalid.
|
||||
MVT MVT::getVT(Type *Ty, bool HandleUnknown){
|
||||
switch (Ty->getTypeID()) {
|
||||
default:
|
||||
if (HandleUnknown) return MVT(MVT::Other);
|
||||
|
@ -230,7 +230,7 @@ EVT EVT::getEVT(Type *Ty, bool HandleUnknown){
|
|||
case Type::VoidTyID:
|
||||
return MVT::isVoid;
|
||||
case Type::IntegerTyID:
|
||||
return getIntegerVT(Ty->getContext(), cast<IntegerType>(Ty)->getBitWidth());
|
||||
return getIntegerVT(cast<IntegerType>(Ty)->getBitWidth());
|
||||
case Type::HalfTyID: return MVT(MVT::f16);
|
||||
case Type::FloatTyID: return MVT(MVT::f32);
|
||||
case Type::DoubleTyID: return MVT(MVT::f64);
|
||||
|
@ -239,6 +239,23 @@ EVT EVT::getEVT(Type *Ty, bool HandleUnknown){
|
|||
case Type::FP128TyID: return MVT(MVT::f128);
|
||||
case Type::PPC_FP128TyID: return MVT(MVT::ppcf128);
|
||||
case Type::PointerTyID: return MVT(MVT::iPTR);
|
||||
case Type::VectorTyID: {
|
||||
VectorType *VTy = cast<VectorType>(Ty);
|
||||
return getVectorVT(
|
||||
getVT(VTy->getElementType(), false), VTy->getNumElements());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// getEVT - Return the value type corresponding to the specified type. This
|
||||
/// returns all pointers as MVT::iPTR. If HandleUnknown is true, unknown types
|
||||
/// are returned as Other, otherwise they are invalid.
|
||||
EVT EVT::getEVT(Type *Ty, bool HandleUnknown){
|
||||
switch (Ty->getTypeID()) {
|
||||
default:
|
||||
return MVT::getVT(Ty, HandleUnknown);
|
||||
case Type::IntegerTyID:
|
||||
return getIntegerVT(Ty->getContext(), cast<IntegerType>(Ty)->getBitWidth());
|
||||
case Type::VectorTyID: {
|
||||
VectorType *VTy = cast<VectorType>(Ty);
|
||||
return getVectorVT(Ty->getContext(), getEVT(VTy->getElementType(), false),
|
||||
|
|
Loading…
Reference in New Issue