GLM  0.9.5
intrinsic_geometric.hpp
1 
29 #ifndef glm_core_intrinsic_geometric
30 #define glm_core_intrinsic_geometric
31 
32 #include "setup.hpp"
33 
34 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
35 # error "SSE2 instructions not supported or enabled"
36 #else
37 
38 #include "intrinsic_common.hpp"
39 
40 namespace glm{
41 namespace detail
42 {
43  //length
44  __m128 sse_len_ps(__m128 x);
45 
46  //distance
47  __m128 sse_dst_ps(__m128 p0, __m128 p1);
48 
49  //dot
50  __m128 sse_dot_ps(__m128 v1, __m128 v2);
51 
52  // SSE1
53  __m128 sse_dot_ss(__m128 v1, __m128 v2);
54 
55  //cross
56  __m128 sse_xpd_ps(__m128 v1, __m128 v2);
57 
58  //normalize
59  __m128 sse_nrm_ps(__m128 v);
60 
61  //faceforward
62  __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref);
63 
64  //reflect
65  __m128 sse_rfe_ps(__m128 I, __m128 N);
66 
67  //refract
68  __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta);
69 
70 }//namespace detail
71 }//namespace glm
72 
73 #include "intrinsic_geometric.inl"
74 
75 #endif//GLM_ARCH
76 #endif//glm_core_intrinsic_geometric