aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/arch/NEON/PacketMath.h
diff options
context:
space:
mode:
authorGravatar Ashutosh Sharma <ashutosh.sharma@amperecomputing.com>2021-02-16 08:25:33 -0800
committerGravatar David Tellenbach <david.tellenbach@me.com>2021-02-16 16:33:59 +0000
commitf702792a7c711e513974be6bf4d44d556ef4ccd8 (patch)
tree19a3828f3f599cf4443e2707bbf201b3aab4e548 /Eigen/src/Core/arch/NEON/PacketMath.h
parentdb61b8d47825e55e348a66e77cb9e1f1cbae066b (diff)
missing method in packetmath.h void ptranspose(PacketBlock<Packet16uc, 4>& kernel)
Diffstat (limited to 'Eigen/src/Core/arch/NEON/PacketMath.h')
-rw-r--r--Eigen/src/Core/arch/NEON/PacketMath.h14
1 files changed, 14 insertions, 0 deletions
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<Packet8s, 4>&
kernel.packet[3] = vreinterpretq_s16_u32(zip32_2.val[1]);
}
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet16c, 4>& 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<Packet16uc, 4>& kernel)
{
const uint8x16x2_t zip8_1 = vzipq_u8(kernel.packet[0], kernel.packet[1]);