diff options
author | Bob Wilson <bob.wilson@apple.com> | 2010-11-10 21:56:12 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2010-11-10 21:56:12 +0000 |
commit | e86d78cf4754a6aef2cf9a33d847aa15338e276f (patch) | |
tree | 97c6cec0fbcf3f47aac7a2da135e0ab500c1fe9a /lib/Sema | |
parent | a66d3bb056932868dac7ac76d6ed22b09281bc80 (diff) |
Add a variant of GCC-style vector types for ARM NEON.
NEON vector types need to be mangled in a special way to comply with ARM's ABI,
similar to some of the AltiVec-specific vector types. This patch is mostly
just renaming a bunch of "AltiVecSpecific" things, since they will no longer
be specific to AltiVec. Besides that, it just adds the new "NeonVector" enum.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118724 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema')
-rw-r--r-- | lib/Sema/SemaChecking.cpp | 2 | ||||
-rw-r--r-- | lib/Sema/SemaInit.cpp | 2 | ||||
-rw-r--r-- | lib/Sema/SemaType.cpp | 10 | ||||
-rw-r--r-- | lib/Sema/TreeTransform.h | 10 |
4 files changed, 12 insertions, 12 deletions
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index e69ebe2250..921df8e2fb 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -811,7 +811,7 @@ ExprResult Sema::SemaBuiltinShuffleVector(CallExpr *TheCall) { } else if (numElements != numResElements) { QualType eltType = LHSType->getAs<VectorType>()->getElementType(); resType = Context.getVectorType(eltType, numResElements, - VectorType::NotAltiVec); + VectorType::GenericVector); } } diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index e601a7d328..7a2db63376 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -914,7 +914,7 @@ void InitListChecker::CheckVectorType(const InitializedEntity &Entity, VecType = SemaRef.Context.getExtVectorType(elementType, numIElts); else VecType = SemaRef.Context.getVectorType(elementType, numIElts, - IVT->getAltiVecSpecific()); + IVT->getVectorKind()); CheckSubElementType(ElementEntity, IList, VecType, Index, StructuredList, StructuredIndex); numEltsInit += numIElts; diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index e7219302c1..cb99a9f892 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -388,12 +388,12 @@ static QualType ConvertDeclSpecToType(Sema &TheSema, } else if (DS.isTypeAltiVecVector()) { unsigned typeSize = static_cast<unsigned>(Context.getTypeSize(Result)); assert(typeSize > 0 && "type size for vector must be greater than 0 bits"); - VectorType::AltiVecSpecific AltiVecSpec = VectorType::AltiVec; + VectorType::VectorKind VecKind = VectorType::AltiVecVector; if (DS.isTypeAltiVecPixel()) - AltiVecSpec = VectorType::Pixel; + VecKind = VectorType::AltiVecPixel; else if (DS.isTypeAltiVecBool()) - AltiVecSpec = VectorType::Bool; - Result = Context.getVectorType(Result, 128/typeSize, AltiVecSpec); + VecKind = VectorType::AltiVecBool; + Result = Context.getVectorType(Result, 128/typeSize, VecKind); } // FIXME: Imaginary. @@ -2044,7 +2044,7 @@ static void HandleVectorSizeAttr(QualType& CurType, const AttributeList &Attr, // Success! Instantiate the vector type, the number of elements is > 0, and // not required to be a power of 2, unlike GCC. CurType = S.Context.getVectorType(CurType, vectorSize/typeSize, - VectorType::NotAltiVec); + VectorType::GenericVector); } void ProcessTypeAttributeList(Sema &S, QualType &Result, diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index 47822c5a9b..655980c85a 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -440,7 +440,7 @@ public: /// By default, performs semantic analysis when building the vector type. /// Subclasses may override this routine to provide different behavior. QualType RebuildVectorType(QualType ElementType, unsigned NumElements, - VectorType::AltiVecSpecific AltiVecSpec); + VectorType::VectorKind VecKind); /// \brief Build a new extended vector type given the element type and /// number of elements. @@ -2841,7 +2841,7 @@ QualType TreeTransform<Derived>::TransformVectorType(TypeLocBuilder &TLB, if (getDerived().AlwaysRebuild() || ElementType != T->getElementType()) { Result = getDerived().RebuildVectorType(ElementType, T->getNumElements(), - T->getAltiVecSpecific()); + T->getVectorKind()); if (Result.isNull()) return QualType(); } @@ -6458,10 +6458,10 @@ TreeTransform<Derived>::RebuildDependentSizedArrayType(QualType ElementType, template<typename Derived> QualType TreeTransform<Derived>::RebuildVectorType(QualType ElementType, - unsigned NumElements, - VectorType::AltiVecSpecific AltiVecSpec) { + unsigned NumElements, + VectorType::VectorKind VecKind) { // FIXME: semantic checking! - return SemaRef.Context.getVectorType(ElementType, NumElements, AltiVecSpec); + return SemaRef.Context.getVectorType(ElementType, NumElements, VecKind); } template<typename Derived> |