|Re: [eigen] arm64 support|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] arm64 support
- From: Chris Laurel <claurel@xxxxxxxxx>
- Date: Tue, 7 Jan 2014 20:38:54 -0800
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=p+YTOlSB/AXW+bWNj6lP+62wy6MdyqFWisDTHK7i0gM=; b=LF/yiagDUELh1omBwZ0EpZG33AXvhdsfaasnf+ed20yV6VNr/gMebfQ7Iz8kmmJ6g6 1MwkXa0LRQ5RJt9YhRKzs09w7TuVekC+OsRDj76ea2OUpfJu4rf6JJSq5v2QM8FpK8Xy EcDRrJWqd6UkCAgdHmFkN7gQI0KGsqM1pMczI6NFz1R/mCz2IJ5ReTJvnmRhUPW0PDJe uohPJXCMeHZcDzKCH01V/CACBCm5T0gV0tQnBEqskuigP0DRyBPprhCPbsXinPQbSUoX KlFEwYH0CRn1v3S1K6bveQDBJYgSL6kz9BieN/GAfKuMaJi+WxS/0XyayBRTT3TIEATt xWJA==
I'm happy to report that I finally have a working arm64 implementation of PacketMath that passes all of the packetmath unit tests.. I've tested it with the LLVM compiler in Xcode 5, running on the Apple A7 processor in an iPhone 5s. This is the only arm64 toolchain I have access to.
The biggest new feature of the NEON instruction for arm64 is double precision, but there are a few other nice additions:
- A vector DIV instruction (instead of the reciprocal estimate / step sequence)
- A vector SQRT instruction (32-bit NEON only has instructions for estimating the reciprocal square root)
- Min and max vector element instructions (instead of pairwise reduction)
What's the preferred way to share this code? The changes are contained in a new PacketMath64.h header, plus a two line addition to the Core header to include PacketMath64.h when __aarch64__ is defined.