From: Bob Wilson Date: Tue, 16 Nov 2010 00:32:26 +0000 (+0000) Subject: Update TypePrinter::PrintVector to handle new Neon vector types. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ec33cbeab96f33007ac19a57bab454519cd94fe9;p=clang 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 --- 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; + } } }