Skip to content

Commit

Permalink
Use new neon_vector_type and neon_polyvector_type attributes for Neon…
Browse files Browse the repository at this point in the history
… vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119406 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
bob-wilson committed Nov 16, 2010
1 parent 4fbf638 commit 6a8aceb
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions utils/TableGen/NeonEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down

0 comments on commit 6a8aceb

Please sign in to comment.