diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-08-09 20:49:55 +0200 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2009-08-09 20:49:55 +0200 |
commit | 527557672ab11a99ceecc2a3bfd9fea9dbe216dd (patch) | |
tree | f641913d8846c6740c519959fe3727b0d30440c3 /Eigen/src/Core | |
parent | 8e086801196a251c013479de51e6cdaa5f595a9b (diff) |
disable the assembly for fast unaligned stores. indeed, there is a strange bug that is triggered by this code:
#include<Eigen/Core>
int main()
{
Eigen::Matrix4f m;
m <<1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;
m.col(0).swap(m.col(1));
std::cout << m << std::endl;
}
when the fast unaligned stores are used, the column is copied instead of being swapped.
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r-- | Eigen/src/Core/arch/SSE/PacketMath.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/Eigen/src/Core/arch/SSE/PacketMath.h index 3fd33afbf..130aa63ce 100644 --- a/Eigen/src/Core/arch/SSE/PacketMath.h +++ b/Eigen/src/Core/arch/SSE/PacketMath.h @@ -178,7 +178,7 @@ template<> EIGEN_STRONG_INLINE Packet4f ei_pload<float>(const float* from) { template<> EIGEN_STRONG_INLINE Packet2d ei_pload<double>(const double* from) { return _mm_load_pd(from); } template<> EIGEN_STRONG_INLINE Packet4i ei_pload<int>(const int* from) { return _mm_load_si128(reinterpret_cast<const Packet4i*>(from)); } -#if (!defined __GNUC__) && (!defined __ICC) +#if 1 // (!defined __GNUC__) && (!defined __ICC) template<> EIGEN_STRONG_INLINE Packet4f ei_ploadu(const float* from) { return _mm_loadu_ps(from); } template<> EIGEN_STRONG_INLINE Packet2d ei_ploadu<double>(const double* from) { return _mm_loadu_pd(from); } template<> EIGEN_STRONG_INLINE Packet4i ei_ploadu<int>(const int* from) { return _mm_loadu_si128(reinterpret_cast<const Packet4i*>(from)); } |