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