diff options
author | Bob Wilson <bob.wilson@apple.com> | 2010-11-16 00:32:26 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2010-11-16 00:32:26 +0000 |
commit | ec33cbeab96f33007ac19a57bab454519cd94fe9 (patch) | |
tree | c91068a53a9500180d3269f1648acc0e6498e7f6 /lib/AST/TypePrinter.cpp | |
parent | 4211bb68cff1f310be280f66a59520548ef99d8f (diff) |
Update TypePrinter::PrintVector to handle new Neon vector types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119302 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/TypePrinter.cpp')
-rw-r--r-- | lib/AST/TypePrinter.cpp | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/lib/AST/TypePrinter.cpp b/lib/AST/TypePrinter.cpp index b405db4bce..5dfad6c900 100644 --- a/lib/AST/TypePrinter.cpp +++ b/lib/AST/TypePrinter.cpp @@ -251,15 +251,29 @@ void TypePrinter::PrintDependentSizedExtVector( } void TypePrinter::PrintVector(const VectorType *T, std::string &S) { - if (T->getVectorKind() != VectorType::GenericVector) { - if (T->getVectorKind() == VectorType::AltiVecPixel) - S = "__vector __pixel " + S; - else { - Print(T->getElementType(), S); - S = ((T->getVectorKind() == VectorType::AltiVecBool) - ? "__vector __bool " : "__vector ") + S; - } - } else { + switch (T->getVectorKind()) { + case VectorType::AltiVecPixel: + S = "__vector __pixel " + S; + break; + case VectorType::AltiVecBool: + Print(T->getElementType(), S); + S = "__vector __bool " + S; + break; + case VectorType::AltiVecVector: + Print(T->getElementType(), S); + S = "__vector " + S; + break; + case VectorType::NeonVector: + Print(T->getElementType(), S); + S = ("__attribute__((neon_vector_type(" + + llvm::utostr_32(T->getNumElements()) + "))) " + S); + break; + case VectorType::NeonPolyVector: + Print(T->getElementType(), S); + S = ("__attribute__((neon_polyvector_type(" + + llvm::utostr_32(T->getNumElements()) + "))) " + S); + break; + case VectorType::GenericVector: { // FIXME: We prefer to print the size directly here, but have no way // to get the size of the type. Print(T->getElementType(), S); @@ -269,6 +283,8 @@ void TypePrinter::PrintVector(const VectorType *T, std::string &S) { Print(T->getElementType(), ET); V += " * sizeof(" + ET + ")))) "; S = V + S; + break; + } } } |