Be more explicit about alignment
This commit is contained in:
@@ -317,8 +317,23 @@ inline simd4_t<T,N> operator*(simd4_t<T,N> v, T f) {
|
||||
# include <pmmintrin.h>
|
||||
# endif
|
||||
|
||||
ALIGN16
|
||||
class simd_aligned16
|
||||
{
|
||||
public:
|
||||
simd_aligned16() {}
|
||||
~simd_aligned16() {}
|
||||
|
||||
void *operator new (size_t size) {
|
||||
return _mm_malloc(size, 16);
|
||||
}
|
||||
void operator delete (void *p) {
|
||||
_mm_free(p);
|
||||
}
|
||||
};
|
||||
|
||||
template<int N>
|
||||
class simd4_t<float,N>
|
||||
class simd4_t<float,N> : public simd_aligned16
|
||||
{
|
||||
private:
|
||||
typedef float __vec4f_t[N];
|
||||
@@ -509,8 +524,23 @@ inline simd4_t<float,N>abs(simd4_t<float,N> v) {
|
||||
# include <immintrin.h>
|
||||
// # include "avxintrin-emu.h"
|
||||
|
||||
ALIGN32
|
||||
class simd_aligned32
|
||||
{
|
||||
public:
|
||||
simd_aligned32() {}
|
||||
~simd_aligned32() {}
|
||||
|
||||
void *operator new (size_t size) {
|
||||
return _mm_malloc(size, 32);
|
||||
}
|
||||
void operator delete (void *p) {
|
||||
_mm_free(p);
|
||||
}
|
||||
};
|
||||
|
||||
template<int N>
|
||||
class simd4_t<double,N>
|
||||
class simd4_t<double,N> : public simd_aligned32
|
||||
{
|
||||
private:
|
||||
typedef double __vec4d_t[N];
|
||||
@@ -683,7 +713,7 @@ inline simd4_t<double,N>abs(simd4_t<double,N> v) {
|
||||
# include <emmintrin.h>
|
||||
|
||||
template<int N>
|
||||
class simd4_t<double,N>
|
||||
class simd4_t<double,N> : public simd_aligned16
|
||||
{
|
||||
private:
|
||||
typedef double __vec4d_t[N];
|
||||
@@ -886,7 +916,7 @@ inline simd4_t<double,N>abs(simd4_t<double,N> v) {
|
||||
# endif
|
||||
|
||||
template<int N>
|
||||
class simd4_t<int,N>
|
||||
class simd4_t<int,N> : public simd_aligned16
|
||||
{
|
||||
private:
|
||||
typedef int __vec4i_t[N];
|
||||
|
||||
@@ -298,7 +298,7 @@ inline simd4x4_t<T,N> operator*(const simd4x4_t<T,N>& m1, const simd4x4_t<T,N>&
|
||||
# include <xmmintrin.h>
|
||||
|
||||
template<>
|
||||
class simd4x4_t<float,4>
|
||||
class simd4x4_t<float,4> : public simd_aligned16
|
||||
{
|
||||
private:
|
||||
typedef float __mtx4f_t[4][4];
|
||||
@@ -520,7 +520,7 @@ inline simd4_t<float,3> transform<float>(const simd4x4_t<float,4>& m, const simd
|
||||
// # include "avxintrin-emu.h"
|
||||
|
||||
template<>
|
||||
class simd4x4_t<double,4>
|
||||
class simd4x4_t<double,4> : public simd_aligned32
|
||||
{
|
||||
private:
|
||||
typedef double __mtx4d_t[4][4];
|
||||
@@ -758,7 +758,7 @@ inline simd4_t<double,3> transform<double>(const simd4x4_t<double,4>& m, const s
|
||||
# include <emmintrin.h>
|
||||
|
||||
template<>
|
||||
class simd4x4_t<double,4>
|
||||
class simd4x4_t<double,4> : public simd_aligned16
|
||||
{
|
||||
private:
|
||||
typedef double __mtx4d_t[4][4];
|
||||
@@ -1052,7 +1052,7 @@ inline simd4_t<double,3> transform<double>(const simd4x4_t<double,4>& m, const s
|
||||
# include <xmmintrin.h>
|
||||
|
||||
template<>
|
||||
class simd4x4_t<int,4>
|
||||
class simd4x4_t<int,4> : public simd_aligned16
|
||||
{
|
||||
private:
|
||||
typedef int __mtx4i_t[4][4];
|
||||
|
||||
Reference in New Issue
Block a user