Classes | Namespaces | Defines | Typedefs | Functions | Variables
math_simd_details.h File Reference
#include "fcl/data_types.h"
#include <xmmintrin.h>
Include dependency graph for math_simd_details.h:

Go to the source code of this file.

Classes

struct  fcl::details::sse_meta_d4
struct  fcl::details::sse_meta_f12
struct  fcl::details::sse_meta_f16
struct  fcl::details::sse_meta_f4

Namespaces

namespace  fcl
 

Main namespace.


namespace  fcl::details
 

FCL internals. Ignore this :) unless you are God.


Defines

#define _mm_rol_ps(x, e)   (((e) % 4) ? _mm_shuffle_ps((x), (x), _MM_SHUFFLE((7-(e))%4, (6-(e))%4, (5-(e))%4, (4-(e))%4)) : (x))
#define _mm_ror_ps(x, e)   (((e) % 4) ? _mm_shuffle_ps((x), (x), _MM_SHUFFLE(((e)+3)%4, ((e)+2)%4, ((e)+1)%4, (e)%4)) : (x))
#define vec_splat(a, e)   _mm_shuffle_ps((a), (a), _MM_SHUFFLE((e), (e), (e), (e)))
#define vec_splatd(a, e)   _mm_shuffle_pd((a), (a), _MM_SHUFFLE2((e), (e)))

Typedefs

typedef float meta_type

Functions

struct fcl::details::sse_meta_f4 fcl::details::__attribute__ ((aligned(16)))
static sse_meta_f4 fcl::details::abs (const sse_meta_f4 &x)
static sse_meta_d4 fcl::details::abs (const sse_meta_d4 &x)
static sse_meta_f12 fcl::details::abs (const sse_meta_f12 &mat)
static sse_meta_f16 fcl::details::abs (const sse_meta_f16 &mat)
static __m128 fcl::details::cross_prod (__m128 x, __m128 y)
static sse_meta_f4 fcl::details::cross_prod (const sse_meta_f4 &x, const sse_meta_f4 &y)
static void fcl::details::cross_prod (__m128d x0, __m128d x1, __m128d y0, __m128d y1, __m128d *z0, __m128d *z1)
static sse_meta_d4 fcl::details::cross_prod (const sse_meta_d4 &x, const sse_meta_d4 &y)
static __m128 fcl::details::dot_prod3 (__m128 x, __m128 y)
static float fcl::details::dot_prod3 (const sse_meta_f4 &x, const sse_meta_f4 &y)
static __m128d fcl::details::dot_prod3 (__m128d x0, __m128d x1, __m128d y0, __m128d y1)
static double fcl::details::dot_prod3 (const sse_meta_d4 &x, const sse_meta_d4 &y)
static __m128 fcl::details::dot_prod4 (__m128 x, __m128 y)
static float fcl::details::dot_prod4 (const sse_meta_f4 &x, const sse_meta_f4 &y)
static __m128d fcl::details::dot_prod4 (__m128d x0, __m128d x1, __m128d y0, __m128d y1)
static double fcl::details::dot_prod4 (const sse_meta_d4 &x, const sse_meta_d4 &y)
static bool fcl::details::equal (const sse_meta_f4 &x, const sse_meta_f4 &y, float epsilon)
static bool fcl::details::equal (const sse_meta_d4 &x, const sse_meta_d4 &y, double epsilon)
static void fcl::details::inverse (__m128 c0, __m128 c1, __m128 c2, __m128 *i0, __m128 *i1, __m128 *i2)
static sse_meta_f12 fcl::details::inverse (const sse_meta_f12 &mat)
static void fcl::details::inverse (__m128 c0, __m128 c1, __m128 c2, __m128 c3, __m128 *res0, __m128 *res1, __m128 *res2, __m128 *res3)
static sse_meta_f16 fcl::details::inverse (const sse_meta_f16 &mat)
sse_meta_f4lbound (const sse_meta_f4 &l)
sse_meta_d4lbound (const sse_meta_d4 &l)
static sse_meta_f4 fcl::details::max (const sse_meta_f4 &x, const sse_meta_f4 &y)
static sse_meta_d4 fcl::details::max (const sse_meta_d4 &x, const sse_meta_d4 &y)
static sse_meta_f4 fcl::details::min (const sse_meta_f4 &x, const sse_meta_f4 &y)
static sse_meta_d4 fcl::details::min (const sse_meta_d4 &x, const sse_meta_d4 &y)
void negate ()
static __m128 fcl::details::newtonraphson_rsqrt4 (const __m128 v)
static sse_meta_f4 fcl::details::normalize3 (const sse_meta_f4 &x)
static sse_meta_f4 fcl::details::normalize3_approx (const sse_meta_f4 &x)
void operator delete[] (void *x)
void * operator new[] (size_t n)
sse_meta_f4 operator* (const sse_meta_f4 &other) const
sse_meta_f4 operator* (float t) const
sse_meta_d4 operator* (const sse_meta_d4 &other) const
sse_meta_d4 operator* (double t) const
sse_meta_f4operator*= (const sse_meta_f4 &other)
sse_meta_f4operator*= (float t)
sse_meta_d4operator*= (const sse_meta_d4 &other)
sse_meta_d4operator*= (double t)
sse_meta_f4 operator+ (const sse_meta_f4 &other) const
sse_meta_f4 operator+ (float t) const
sse_meta_d4 operator+ (const sse_meta_d4 &other) const
sse_meta_d4 operator+ (double t) const
sse_meta_f4operator+= (const sse_meta_f4 &other)
sse_meta_f4operator+= (float t)
sse_meta_d4operator+= (const sse_meta_d4 &other)
sse_meta_d4operator+= (double t)
sse_meta_f4 operator- (const sse_meta_f4 &other) const
sse_meta_f4 operator- (float t) const
sse_meta_f4 operator- () const
sse_meta_d4 operator- (const sse_meta_d4 &other) const
sse_meta_d4 operator- (double t) const
sse_meta_f4operator-= (const sse_meta_f4 &other)
sse_meta_f4operator-= (float t)
sse_meta_d4operator-= (const sse_meta_d4 &other)
sse_meta_d4operator-= (double t)
sse_meta_f4 operator/ (const sse_meta_f4 &other) const
sse_meta_f4 operator/ (float t) const
sse_meta_d4 operator/ (const sse_meta_d4 &other) const
sse_meta_d4 operator/ (double t) const
sse_meta_f4operator/= (const sse_meta_f4 &other)
sse_meta_f4operator/= (float t)
sse_meta_d4operator/= (const sse_meta_d4 &other)
sse_meta_d4operator/= (double t)
float operator[] (size_t i) const
void setValue (float x, float y, float z, float w=1)
void setValue (float x)
void setValue (__m128 x)
void setValue (double x, double y, double z, double w=0)
void setValue (double x)
void setValue (__m128d x, __m128d y)
 sse_meta_d4 ()
 sse_meta_d4 (double x)
 sse_meta_d4 (double *px)
 sse_meta_d4 (__m128d x, __m128d y)
 sse_meta_d4 (double x, double y, double z, double w=0)
 sse_meta_f4 ()
 sse_meta_f4 (float x)
 sse_meta_f4 (float *px)
 sse_meta_f4 (__m128 x)
 sse_meta_f4 (float x, float y, float z, float w=1)
static void fcl::details::transpose (__m128 c0, __m128 c1, __m128 c2, __m128 *r0, __m128 *r1, __m128 *r2)
static sse_meta_f12 fcl::details::transpose (const sse_meta_f12 &mat)
static void fcl::details::transpose (__m128 c0, __m128 c1, __m128 c2, __m128 c3, __m128 *r0, __m128 *r1, __m128 *r2, __m128 *r3)
static sse_meta_f16 fcl::details::transpose (const sse_meta_f16 &mat)
sse_meta_f4ubound (const sse_meta_f4 &u)
sse_meta_d4ubound (const sse_meta_d4 &u)
static __m128 fcl::details::vec_sel (__m128 a, __m128 b, __m128 mask)
static __m128 fcl::details::vec_sel (__m128 a, __m128 b, const unsigned int *mask)
static __m128 fcl::details::vec_sel (__m128 a, __m128 b, unsigned int mask)

Variables

union {
   __m128d   v [2]
   double   vs [4]
}; 
union {
   __m128   v
   float   vs [4]
}; 
struct fcl::details::sse_meta_f12 fcl::details::__attribute__
const __m128d fcl::details::xmmd_0 = {0, 0}
const __m128 fcl::details::xmms_0 = {0.f, 0.f, 0.f, 0.f}

Define Documentation

#define _mm_rol_ps (   x,
 
)    (((e) % 4) ? _mm_shuffle_ps((x), (x), _MM_SHUFFLE((7-(e))%4, (6-(e))%4, (5-(e))%4, (4-(e))%4)) : (x))

Definition at line 81 of file math_simd_details.h.

#define _mm_ror_ps (   x,
 
)    (((e) % 4) ? _mm_shuffle_ps((x), (x), _MM_SHUFFLE(((e)+3)%4, ((e)+2)%4, ((e)+1)%4, (e)%4)) : (x))

Definition at line 79 of file math_simd_details.h.

#define vec_splat (   a,
 
)    _mm_shuffle_ps((a), (a), _MM_SHUFFLE((e), (e), (e), (e)))

Definition at line 76 of file math_simd_details.h.

#define vec_splatd (   a,
 
)    _mm_shuffle_pd((a), (a), _MM_SHUFFLE2((e), (e)))

Definition at line 77 of file math_simd_details.h.


Typedef Documentation

typedef double meta_type

Definition at line 146 of file math_simd_details.h.


Function Documentation

sse_meta_f4& __attribute__::lbound ( const sse_meta_f4 l) [inline]

Definition at line 165 of file math_simd_details.h.

sse_meta_d4& __attribute__::lbound ( const sse_meta_d4 l) [inline]

Definition at line 313 of file math_simd_details.h.

void negate ( ) [inline]

Definition at line 157 of file math_simd_details.h.

void operator delete[] ( void *  x) [inline]

Definition at line 172 of file math_simd_details.h.

void * operator new[] ( size_t  n) [inline]

Definition at line 171 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator* ( const sse_meta_f4 other) const [inline]

Definition at line 178 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator* ( float  t) const [inline]

Definition at line 186 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator* ( const sse_meta_d4 other) const [inline]

Definition at line 335 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator* ( double  t) const [inline]

Definition at line 343 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator*= ( const sse_meta_f4 other) [inline]

Definition at line 182 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator*= ( float  t) [inline]

Definition at line 190 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator*= ( const sse_meta_d4 other) [inline]

Definition at line 339 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator*= ( double  t) [inline]

Definition at line 347 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator+ ( const sse_meta_f4 other) const [inline]

Definition at line 176 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator+ ( float  t) const [inline]

Definition at line 184 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator+ ( const sse_meta_d4 other) const [inline]

Definition at line 333 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator+ ( double  t) const [inline]

Definition at line 341 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator+= ( const sse_meta_f4 other) [inline]

Definition at line 180 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator+= ( float  t) [inline]

Definition at line 188 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator+= ( const sse_meta_d4 other) [inline]

Definition at line 337 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator+= ( double  t) [inline]

Definition at line 345 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator- ( const sse_meta_f4 other) const [inline]

Definition at line 177 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator- ( float  t) const [inline]

Definition at line 185 of file math_simd_details.h.

sse_meta_d4 operator- ( ) const [inline]

Definition at line 192 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator- ( const sse_meta_d4 other) const [inline]

Definition at line 334 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator- ( double  t) const [inline]

Definition at line 342 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator-= ( const sse_meta_f4 other) [inline]

Definition at line 181 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator-= ( float  t) [inline]

Definition at line 189 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator-= ( const sse_meta_d4 other) [inline]

Definition at line 338 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator-= ( double  t) [inline]

Definition at line 346 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator/ ( const sse_meta_f4 other) const [inline]

Definition at line 179 of file math_simd_details.h.

sse_meta_f4 __attribute__::operator/ ( float  t) const [inline]

Definition at line 187 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator/ ( const sse_meta_d4 other) const [inline]

Definition at line 336 of file math_simd_details.h.

sse_meta_d4 __attribute__::operator/ ( double  t) const [inline]

Definition at line 344 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator/= ( const sse_meta_f4 other) [inline]

Definition at line 183 of file math_simd_details.h.

sse_meta_f4& __attribute__::operator/= ( float  t) [inline]

Definition at line 191 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator/= ( const sse_meta_d4 other) [inline]

Definition at line 340 of file math_simd_details.h.

sse_meta_d4& __attribute__::operator/= ( double  t) [inline]

Definition at line 348 of file math_simd_details.h.

double & operator[] ( size_t  i) const [inline]

Definition at line 173 of file math_simd_details.h.

void __attribute__::setValue ( float  x,
float  y,
float  z,
float  w = 1 
) [inline]

Definition at line 154 of file math_simd_details.h.

void __attribute__::setValue ( float  x) [inline]

Definition at line 155 of file math_simd_details.h.

void __attribute__::setValue ( __m128  x) [inline]

Definition at line 156 of file math_simd_details.h.

void __attribute__::setValue ( double  x,
double  y,
double  z,
double  w = 0 
) [inline]

Definition at line 282 of file math_simd_details.h.

void __attribute__::setValue ( double  x) [inline]

Definition at line 288 of file math_simd_details.h.

void __attribute__::setValue ( __m128d  x,
__m128d  y 
) [inline]

Definition at line 294 of file math_simd_details.h.

Definition at line 255 of file math_simd_details.h.

Definition at line 260 of file math_simd_details.h.

__attribute__::sse_meta_d4 ( double *  px)

Definition at line 265 of file math_simd_details.h.

__attribute__::sse_meta_d4 ( __m128d  x,
__m128d  y 
)

Definition at line 271 of file math_simd_details.h.

__attribute__::sse_meta_d4 ( double  x,
double  y,
double  z,
double  w = 0 
)

Definition at line 277 of file math_simd_details.h.

Definition at line 149 of file math_simd_details.h.

Definition at line 150 of file math_simd_details.h.

__attribute__::sse_meta_f4 ( float *  px)

Definition at line 151 of file math_simd_details.h.

Definition at line 152 of file math_simd_details.h.

__attribute__::sse_meta_f4 ( float  x,
float  y,
float  z,
float  w = 1 
)

Definition at line 153 of file math_simd_details.h.

sse_meta_f4& __attribute__::ubound ( const sse_meta_f4 u) [inline]

Definition at line 159 of file math_simd_details.h.

sse_meta_d4& __attribute__::ubound ( const sse_meta_d4 u) [inline]

Definition at line 306 of file math_simd_details.h.


Variable Documentation

union { ... }
union { ... }
__m128d v[2]

Definition at line 148 of file math_simd_details.h.

double vs[4]

Definition at line 148 of file math_simd_details.h.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


fcl
Author(s): Jia Pan
autogenerated on Tue Jan 15 2013 16:05:31