Fix a mistake

This commit is contained in:
Erik Hofman
2017-01-30 00:18:36 +01:00
parent 9215c530b3
commit 866f85064a
2 changed files with 14 additions and 12 deletions

View File

@@ -679,7 +679,7 @@ inline simd4_t<double,4>::simd4_t(const simd4_t<double,2>& v) {
}
template<>
inline simd4_t<double,3>::simd4_t(const simd4_t<double,4>& v) {
simd4 = _mm_and_pd(v.v4(), dmask3);
simd4 = _mm256_and_pd(v.v4(), dmask3);
}
template<>
inline simd4_t<double,3>::simd4_t(const simd4_t<double,3>& v) {
@@ -691,11 +691,11 @@ inline simd4_t<double,3>::simd4_t(const simd4_t<double,2>& v) {
}
template<>
inline simd4_t<double,2>::simd4_t(const simd4_t<double,4>& v) {
simd4 = _mm_and_pd(v.v4(), dmask2);
simd4 = _mm256_and_pd(v.v4(), dmask2);
}
template<>
inline simd4_t<double,2>::simd4_t(const simd4_t<double,3>& v) {
simd4 = _mm_and_pd(v.v4(), dmask2);
simd4 = _mm256_and_pd(v.v4(), dmask2);
}
template<>
inline simd4_t<double,2>::simd4_t(const simd4_t<double,2>& v) {

View File

@@ -1062,23 +1062,25 @@ public:
}
inline simd4x4_t<int,4>& operator*=(int v) {
__m128i v4 = _mm_set1_epi32(v);
simd4_t<int,4> v4(v);
for (int i=0; i<4; ++i) {
simd4x4[i] = _mm_mul_epi32(simd4x4[i], v4);
simd4x4[i] *= v4.v4();
}
return *this;
}
simd4x4_t<int,4>& operator*=(const simd4x4_t<int,4>& m2) {
__m128i row, col;
for (int i=0; i<4; ++i ) {
col = _mm_set1_epi32(m2.ptr()[i][0]);
row = _mm_mul_epi32(simd4x4[0], col);
simd4x4_t<int,4> m1 = *this;
simd4_t<int,4> row, col;
for (int i=0; i<4; ++i) {
simd4_t<int,4> col(m2.ptr()[i][0]);
row.v4() = m1.m4x4()[0] * col.v4();
for (int j=1; j<4; ++j) {
col = _mm_set1_epi32(m2.ptr()[i][j]);
row = _mm_add_epi32(row, _mm_mul_epi32(simd4x4[j], col));
simd4_t<int,4> col(m2.ptr()[i][j]);
row.v4() += m1.m4x4()[j] * col.v4();
}
simd4x4[i] = row;
simd4x4[i] = row.v4();
}
return *this;
}