VcDevel / Vc

SIMD Vector Classes for C++
BSD 3-Clause "New" or "Revised" License
1.46k stars 150 forks source link

ABI types for ARM NEON #159

Open mattkretz opened 7 years ago

mattkretz commented 7 years ago

ARM NEON defines a lot of intrinsic SIMD types (float32x4_t, and etc.) and operations. Which ones should be implemented? What's the corresponding ABI?

mattkretz commented 7 years ago

Table 18-1 in http://infocenter.arm.com/help/topic/com.arm.doc.dui0472m/chr1359125039392.html lists the supported types. In principle, those types imply two Abi types: neon64 and neon128. The latter should probably be an alias for neon (or the other way around). Alternatively, have the neon Abi type use 128 bits and use a partial_neon<NBytes> type to enable any other size. partial_neon<8> would thus map to the 64-bit types.

oshadura commented 7 years ago

@mattkretz , table is outdated I afraid... I am using "ARM®NEON™ Intrinsics Reference" from March 2016, and here we need to separate ARMv7, ARMv8 and ARMv8(AArch64). I was targeting development to ARMv8(AArch64)

http://infocenter.arm.com/help/topic/com.arm.doc.ihi0073b/IHI0073B_arm_neon_intrinsics_ref.pdf

mattkretz commented 7 years ago

Thanks. The Abi comment is still valid though.