aboutsummaryrefslogtreecommitdiff
path: root/src/f32.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/f32.rs')
-rw-r--r--src/f32.rs165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/f32.rs b/src/f32.rs
new file mode 100644
index 0000000..2076bd4
--- /dev/null
+++ b/src/f32.rs
@@ -0,0 +1,165 @@
+mod affine2;
+mod affine3a;
+mod mat3;
+mod vec2;
+mod vec3;
+
+#[cfg(all(feature = "core-simd", not(feature = "scalar-math")))]
+mod coresimd;
+
+#[cfg(any(
+ not(any(
+ feature = "core-simd",
+ target_feature = "sse2",
+ target_feature = "simd128"
+ )),
+ feature = "scalar-math"
+))]
+mod scalar;
+
+#[cfg(all(
+ target_feature = "sse2",
+ not(any(feature = "core-simd", feature = "scalar-math"))
+))]
+mod sse2;
+
+#[cfg(all(
+ target_feature = "simd128",
+ not(any(feature = "core-simd", feature = "scalar-math"))
+))]
+mod wasm32;
+
+#[cfg(any(
+ not(any(
+ feature = "core-simd",
+ target_feature = "sse2",
+ target_feature = "simd128"
+ )),
+ feature = "scalar-math"
+))]
+use scalar::*;
+
+#[cfg(all(
+ target_feature = "sse2",
+ not(any(feature = "core-simd", feature = "scalar-math"))
+))]
+use sse2::*;
+
+#[cfg(all(
+ target_feature = "simd128",
+ not(any(feature = "core-simd", feature = "scalar-math"))
+))]
+use wasm32::*;
+
+#[cfg(all(feature = "core-simd", not(feature = "scalar-math")))]
+use coresimd::*;
+
+pub use affine2::Affine2;
+pub use affine3a::Affine3A;
+pub use mat2::{mat2, Mat2};
+pub use mat3::{mat3, Mat3};
+pub use mat3a::{mat3a, Mat3A};
+pub use mat4::{mat4, Mat4};
+pub use quat::{quat, Quat};
+pub use vec2::{vec2, Vec2};
+pub use vec3::{vec3, Vec3};
+pub use vec3a::{vec3a, Vec3A};
+pub use vec4::{vec4, Vec4};
+
+#[cfg(not(target_arch = "spirv"))]
+mod test {
+ use super::*;
+
+ #[cfg(all(not(feature = "cuda"), feature = "scalar-math"))]
+ mod const_test_affine2 {
+ const_assert_eq!(
+ core::mem::align_of::<super::Vec2>(),
+ core::mem::align_of::<super::Affine2>()
+ );
+ const_assert_eq!(24, core::mem::size_of::<super::Affine2>());
+ }
+
+ #[cfg(not(feature = "scalar-math"))]
+ mod const_test_affine2 {
+ const_assert_eq!(16, core::mem::align_of::<super::Affine2>());
+ const_assert_eq!(32, core::mem::size_of::<super::Affine2>());
+ }
+
+ mod const_test_mat2 {
+ #[cfg(feature = "scalar-math")]
+ const_assert_eq!(
+ core::mem::align_of::<super::Vec2>(),
+ core::mem::align_of::<super::Mat2>()
+ );
+ #[cfg(not(any(feature = "scalar-math", target_arch = "spirv")))]
+ const_assert_eq!(16, core::mem::align_of::<super::Mat2>());
+ const_assert_eq!(16, core::mem::size_of::<super::Mat2>());
+ }
+
+ mod const_test_mat3 {
+ const_assert_eq!(
+ core::mem::align_of::<f32>(),
+ core::mem::align_of::<super::Mat3>()
+ );
+ const_assert_eq!(36, core::mem::size_of::<super::Mat3>());
+ }
+
+ mod const_test_mat3a {
+ const_assert_eq!(16, core::mem::align_of::<super::Mat3A>());
+ const_assert_eq!(48, core::mem::size_of::<super::Mat3A>());
+ }
+
+ mod const_test_mat4 {
+ const_assert_eq!(
+ core::mem::align_of::<super::Vec4>(),
+ core::mem::align_of::<super::Mat4>()
+ );
+ const_assert_eq!(64, core::mem::size_of::<super::Mat4>());
+ }
+
+ mod const_test_quat {
+ #[cfg(feature = "scalar-math")]
+ const_assert_eq!(
+ core::mem::align_of::<f32>(),
+ core::mem::align_of::<super::Quat>()
+ );
+ #[cfg(not(any(feature = "scalar-math", target_arch = "spirv")))]
+ const_assert_eq!(16, core::mem::align_of::<super::Quat>());
+ const_assert_eq!(16, core::mem::size_of::<super::Quat>());
+ }
+
+ mod const_test_vec2 {
+ #[cfg(not(feature = "cuda"))]
+ const_assert_eq!(
+ core::mem::align_of::<f32>(),
+ core::mem::align_of::<super::Vec2>()
+ );
+ #[cfg(feature = "cuda")]
+ const_assert_eq!(8, core::mem::align_of::<super::Vec2>());
+ const_assert_eq!(8, core::mem::size_of::<super::Vec2>());
+ }
+
+ mod const_test_vec3 {
+ const_assert_eq!(
+ core::mem::align_of::<f32>(),
+ core::mem::align_of::<super::Vec3>()
+ );
+ const_assert_eq!(12, core::mem::size_of::<super::Vec3>());
+ }
+
+ mod const_test_vec3a {
+ const_assert_eq!(16, core::mem::align_of::<super::Vec3A>());
+ const_assert_eq!(16, core::mem::size_of::<super::Vec3A>());
+ }
+
+ mod const_test_vec4 {
+ #[cfg(all(feature = "scalar-math", not(feature = "cuda")))]
+ const_assert_eq!(
+ core::mem::align_of::<f32>(),
+ core::mem::align_of::<super::Vec4>()
+ );
+ #[cfg(not(feature = "scalar-math"))]
+ const_assert_eq!(16, core::mem::align_of::<super::Vec4>());
+ const_assert_eq!(16, core::mem::size_of::<super::Vec4>());
+ }
+}