From f702792a7c711e513974be6bf4d44d556ef4ccd8 Mon Sep 17 00:00:00 2001 From: Ashutosh Sharma Date: Tue, 16 Feb 2021 08:25:33 -0800 Subject: missing method in packetmath.h void ptranspose(PacketBlock& kernel) --- Eigen/src/Core/arch/NEON/PacketMath.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'Eigen/src/Core/arch/NEON/PacketMath.h') diff --git a/Eigen/src/Core/arch/NEON/PacketMath.h b/Eigen/src/Core/arch/NEON/PacketMath.h index c7d53975e..98d78751a 100644 --- a/Eigen/src/Core/arch/NEON/PacketMath.h +++ b/Eigen/src/Core/arch/NEON/PacketMath.h @@ -3019,6 +3019,20 @@ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void ptranspose(PacketBlock& kernel.packet[3] = vreinterpretq_s16_u32(zip32_2.val[1]); } +EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void ptranspose(PacketBlock& kernel) +{ + const int8x16x2_t zip8_1 = vzipq_s8(kernel.packet[0], kernel.packet[1]); + const int8x16x2_t zip8_2 = vzipq_s8(kernel.packet[2], kernel.packet[3]); + + const int16x8x2_t zip16_1 = vzipq_s16(vreinterpretq_s16_s8(zip8_1.val[0]), vreinterpretq_s16_s8(zip8_2.val[0])); + const int16x8x2_t zip16_2 = vzipq_s16(vreinterpretq_s16_s8(zip8_1.val[1]), vreinterpretq_s16_s8(zip8_2.val[1])); + + kernel.packet[0] = vreinterpretq_s8_s16(zip16_1.val[0]); + kernel.packet[1] = vreinterpretq_s8_s16(zip16_1.val[1]); + kernel.packet[2] = vreinterpretq_s8_s16(zip16_2.val[0]); + kernel.packet[3] = vreinterpretq_s8_s16(zip16_2.val[1]); +} + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void ptranspose(PacketBlock& kernel) { const uint8x16x2_t zip8_1 = vzipq_u8(kernel.packet[0], kernel.packet[1]); -- cgit v1.2.3