aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
diff options
context:
space:
mode:
authorGraham Hunter <graham.hunter@arm.com>2019-05-29 12:22:54 +0000
committerGraham Hunter <graham.hunter@arm.com>2019-05-29 12:22:54 +0000
commitf4fc01f8dd3a5dfd2060d1ad0df6b90e8351ddf7 (patch)
tree56875bf42be9322f947178d01385a813ea566f46 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
parent4c5a0d1683e1bc5d0e12de8806b37ffbdc8c5904 (diff)
downloadllvm-f4fc01f8dd3a5dfd2060d1ad0df6b90e8351ddf7.zip
llvm-f4fc01f8dd3a5dfd2060d1ad0df6b90e8351ddf7.tar.gz
llvm-f4fc01f8dd3a5dfd2060d1ad0df6b90e8351ddf7.tar.bz2
[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
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
-rw-r--r--llvm/lib/Bitcode/Writer/BitcodeWriter.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index 00d6fe8..8e1e062 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -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;
}
}