intrinsic_matrix.hpp
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 #ifndef glm_detail_intrinsic_matrix
00030 #define glm_detail_intrinsic_matrix
00031 
00032 #include "setup.hpp"
00033 
00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2)
00035 #       error "SSE2 instructions not supported or enabled"
00036 #else
00037 
00038 #include "intrinsic_geometric.hpp"
00039 
00040 namespace glm{
00041 namespace detail
00042 {
00043         void sse_add_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
00044 
00045         void sse_sub_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
00046 
00047         __m128 sse_mul_ps(__m128 m[4], __m128 v);
00048 
00049         __m128 sse_mul_ps(__m128 v, __m128 m[4]);
00050 
00051         void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4]);
00052 
00053         void sse_transpose_ps(__m128 const in[4], __m128 out[4]);
00054 
00055         void sse_inverse_ps(__m128 const in[4], __m128 out[4]);
00056 
00057         void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4]);
00058 
00059         __m128 sse_det_ps(__m128 const m[4]);
00060 
00061         __m128 sse_slow_det_ps(__m128 const m[4]);
00062 
00063 }//namespace detail
00064 }//namespace glm
00065 
00066 #include "intrinsic_matrix.inl"
00067 
00068 #endif//GLM_ARCH
00069 #endif//glm_detail_intrinsic_matrix