• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 mod affine2;
2 mod affine3a;
3 mod float;
4 mod mat3;
5 pub(crate) mod math;
6 mod vec2;
7 mod vec3;
8 
9 #[cfg(all(feature = "core-simd", not(feature = "scalar-math")))]
10 mod coresimd;
11 
12 #[cfg(any(
13     not(any(
14         feature = "core-simd",
15         target_feature = "sse2",
16         target_feature = "simd128"
17     )),
18     feature = "scalar-math"
19 ))]
20 mod scalar;
21 
22 #[cfg(all(
23     target_feature = "sse2",
24     not(any(feature = "core-simd", feature = "scalar-math"))
25 ))]
26 mod sse2;
27 
28 #[cfg(all(
29     target_feature = "simd128",
30     not(any(feature = "core-simd", feature = "scalar-math"))
31 ))]
32 mod wasm32;
33 
34 #[cfg(any(
35     not(any(
36         feature = "core-simd",
37         target_feature = "sse2",
38         target_feature = "simd128"
39     )),
40     feature = "scalar-math"
41 ))]
42 use scalar::*;
43 
44 #[cfg(all(
45     target_feature = "sse2",
46     not(any(feature = "core-simd", feature = "scalar-math"))
47 ))]
48 use sse2::*;
49 
50 #[cfg(all(
51     target_feature = "simd128",
52     not(any(feature = "core-simd", feature = "scalar-math"))
53 ))]
54 use wasm32::*;
55 
56 #[cfg(all(feature = "core-simd", not(feature = "scalar-math")))]
57 use coresimd::*;
58 
59 pub use affine2::Affine2;
60 pub use affine3a::Affine3A;
61 pub use mat2::{mat2, Mat2};
62 pub use mat3::{mat3, Mat3};
63 pub use mat3a::{mat3a, Mat3A};
64 pub use mat4::{mat4, Mat4};
65 pub use quat::{quat, Quat};
66 pub use vec2::{vec2, Vec2};
67 pub use vec3::{vec3, Vec3};
68 pub use vec3a::{vec3a, Vec3A};
69 pub use vec4::{vec4, Vec4};
70 
71 #[cfg(not(target_arch = "spirv"))]
72 mod test {
73     use super::*;
74 
75     #[cfg(all(not(feature = "cuda"), feature = "scalar-math"))]
76     mod const_test_affine2 {
77         const_assert_eq!(
78             core::mem::align_of::<super::Vec2>(),
79             core::mem::align_of::<super::Affine2>()
80         );
81         const_assert_eq!(24, core::mem::size_of::<super::Affine2>());
82     }
83 
84     #[cfg(not(feature = "scalar-math"))]
85     mod const_test_affine2 {
86         const_assert_eq!(16, core::mem::align_of::<super::Affine2>());
87         const_assert_eq!(32, core::mem::size_of::<super::Affine2>());
88     }
89 
90     mod const_test_mat2 {
91         #[cfg(feature = "scalar-math")]
92         const_assert_eq!(
93             core::mem::align_of::<super::Vec2>(),
94             core::mem::align_of::<super::Mat2>()
95         );
96         #[cfg(not(any(feature = "scalar-math", target_arch = "spirv")))]
97         const_assert_eq!(16, core::mem::align_of::<super::Mat2>());
98         const_assert_eq!(16, core::mem::size_of::<super::Mat2>());
99     }
100 
101     mod const_test_mat3 {
102         const_assert_eq!(
103             core::mem::align_of::<f32>(),
104             core::mem::align_of::<super::Mat3>()
105         );
106         const_assert_eq!(36, core::mem::size_of::<super::Mat3>());
107     }
108 
109     mod const_test_mat3a {
110         const_assert_eq!(16, core::mem::align_of::<super::Mat3A>());
111         const_assert_eq!(48, core::mem::size_of::<super::Mat3A>());
112     }
113 
114     mod const_test_mat4 {
115         const_assert_eq!(
116             core::mem::align_of::<super::Vec4>(),
117             core::mem::align_of::<super::Mat4>()
118         );
119         const_assert_eq!(64, core::mem::size_of::<super::Mat4>());
120     }
121 
122     mod const_test_quat {
123         #[cfg(feature = "scalar-math")]
124         const_assert_eq!(
125             core::mem::align_of::<f32>(),
126             core::mem::align_of::<super::Quat>()
127         );
128         #[cfg(not(any(feature = "scalar-math", target_arch = "spirv")))]
129         const_assert_eq!(16, core::mem::align_of::<super::Quat>());
130         const_assert_eq!(16, core::mem::size_of::<super::Quat>());
131     }
132 
133     mod const_test_vec2 {
134         #[cfg(not(feature = "cuda"))]
135         const_assert_eq!(
136             core::mem::align_of::<f32>(),
137             core::mem::align_of::<super::Vec2>()
138         );
139         #[cfg(feature = "cuda")]
140         const_assert_eq!(8, core::mem::align_of::<super::Vec2>());
141         const_assert_eq!(8, core::mem::size_of::<super::Vec2>());
142     }
143 
144     mod const_test_vec3 {
145         const_assert_eq!(
146             core::mem::align_of::<f32>(),
147             core::mem::align_of::<super::Vec3>()
148         );
149         const_assert_eq!(12, core::mem::size_of::<super::Vec3>());
150     }
151 
152     mod const_test_vec3a {
153         const_assert_eq!(16, core::mem::align_of::<super::Vec3A>());
154         const_assert_eq!(16, core::mem::size_of::<super::Vec3A>());
155     }
156 
157     mod const_test_vec4 {
158         #[cfg(all(feature = "scalar-math", not(feature = "cuda")))]
159         const_assert_eq!(
160             core::mem::align_of::<f32>(),
161             core::mem::align_of::<super::Vec4>()
162         );
163         #[cfg(not(feature = "scalar-math"))]
164         const_assert_eq!(16, core::mem::align_of::<super::Vec4>());
165         const_assert_eq!(16, core::mem::size_of::<super::Vec4>());
166     }
167 }
168