![]() Registered Member ![]()
|
Hi,
I am trying to implement vectorize form for "predux_downto4" function for one of our cores: template<typename Packet> EIGEN_DEVICE_FUNC inline typename conditional<(unpacket_traits<Packet>::size%8)==0,typename unpacket_traits<Packet>::half,Packet>::type predux_downto4(const Packet& a) While the function gets a vector (16 elements in my case) and return half a vector (8 elements). But when compiling I am getting the following error: c:\TempTools\SensProV1_2\cevatools\lib\clang\11.0.1\include\Eigen/src/Core/GenericPacketMath.h:286:11: error: assigning to 'float' from incompatible type 'float const __attribute__((ext_vector_type(8)))' (vector of 8 'float' values) { (*to) = from; } Means that in my case, the scalar implementation (store function) is been used in half vector. That make sense because I didn't implement any of the other half vector functions. The question is, should I implement all functions with half vector in order to implement "predux_downto4" on full vector? I that in AVX implementation there isn't any half vector implementation of any function, how could it be? Thank you in advance for your response. Omer Garibi |
Registered users: bartoloni, Bing [Bot], Google [Bot], Yahoo [Bot]