[SVE][IR] Scalable Vector IR Type
* Adds a 'scalable' flag to VectorType * Adds an 'ElementCount' class to VectorType to pass (possibly scalable) vector lengths, with overloaded operators. * Modifies existing helper functions to use ElementCount * Adds support for serializing/deserializing to/from both textual and bitcode IR formats * Extends the verifier to reject global variables of scalable types * Updates documentation See the latest version of the RFC here: http://lists.llvm.org/pipermail/llvm-dev/2018-July/124396.html Reviewers: rengolin, lattner, echristo, chandlerc, hfinkel, rkruppe, samparker, SjoerdMeijer, greened, sebpop Reviewed By: hfinkel, sebpop Differential Revision: https://reviews.llvm.org/D32530 llvm-svn: 361953
This commit is contained in:
@@ -931,10 +931,13 @@ void ModuleBitcodeWriter::writeTypeTable() {
|
||||
}
|
||||
case Type::VectorTyID: {
|
||||
VectorType *VT = cast<VectorType>(T);
|
||||
// VECTOR [numelts, eltty]
|
||||
// VECTOR [numelts, eltty] or
|
||||
// [numelts, eltty, scalable]
|
||||
Code = bitc::TYPE_CODE_VECTOR;
|
||||
TypeVals.push_back(VT->getNumElements());
|
||||
TypeVals.push_back(VE.getTypeID(VT->getElementType()));
|
||||
if (VT->isScalable())
|
||||
TypeVals.push_back(VT->isScalable());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user