From 6a8aceb50bb3280fc291e50647bff07ca4282ce0 Mon Sep 17 00:00:00 2001 From: Bob Wilson <bob.wilson@apple.com> Date: Tue, 16 Nov 2010 23:57:06 +0000 Subject: [PATCH] Use new neon_vector_type and neon_polyvector_type attributes for Neon vectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119406 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/NeonEmitter.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/utils/TableGen/NeonEmitter.cpp b/utils/TableGen/NeonEmitter.cpp index 333ca2f31c1..f4f79493e40 100644 --- a/utils/TableGen/NeonEmitter.cpp +++ b/utils/TableGen/NeonEmitter.cpp @@ -844,21 +844,25 @@ void NeonEmitter::run(raw_ostream &OS) { // Emit vector typedefs. for (unsigned i = 0, e = TDTypeVec.size(); i != e; ++i) { - bool dummy, quad = false; - (void) ClassifyType(TDTypeVec[i], quad, dummy, dummy); - OS << "typedef __attribute__(( __vector_size__("; + bool dummy, quad = false, poly = false; + (void) ClassifyType(TDTypeVec[i], quad, poly, dummy); + if (poly) + OS << "typedef __attribute__((neon_polyvector_type("; + else + OS << "typedef __attribute__((neon_vector_type("; - OS << utostr(8*(quad ? 2 : 1)) << ") )) "; - if (!quad) + unsigned nElts = GetNumElements(TDTypeVec[i], quad); + OS << utostr(nElts) << "))) "; + if (nElts < 10) OS << " "; OS << TypeString('s', TDTypeVec[i]); OS << " " << TypeString('d', TDTypeVec[i]) << ";\n"; } OS << "\n"; - OS << "typedef __attribute__(( __vector_size__(8) )) " + OS << "typedef __attribute__((__vector_size__(8))) " "double float64x1_t;\n"; - OS << "typedef __attribute__(( __vector_size__(16) )) " + OS << "typedef __attribute__((__vector_size__(16))) " "double float64x2_t;\n"; OS << "\n";