[package]
edition = "2024"
rust-version = "1.94"
name = "hydroplane"
version = "0.1.0"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Floating but fast: float-agnostic, ISPC-style SPMD/SIMD infrastructure — write one kernel generic over the scalar element (f32/f64/f16/bf16) and run it with runtime ISA dispatch."
documentation = "https://docs.rs/hydroplane"
readme = "README.md"
keywords = [
"simd",
"spmd",
"ispc",
"vectorization",
"no-std",
]
categories = [
"hardware-support",
"no-std",
"mathematics",
]
license = "Apache-2.0"
repository = "https://github.com/oh-yes-0-fps/hydroplane"
resolver = "2"
[features]
alloc = []
default = ["std"]
glam = ["dep:glam"]
libm = [
"dep:libm",
"glam?/libm",
]
std = [
"alloc",
"half/std",
"glam?/std",
]
[lib]
name = "hydroplane"
path = "src/lib.rs"
[[example]]
name = "asm_mat3"
path = "examples/asm_mat3.rs"
required-features = ["glam"]
[[example]]
name = "asm_probe"
path = "examples/asm_probe.rs"
[[example]]
name = "bench_spheres"
path = "examples/bench_spheres.rs"
[[example]]
name = "micro_kernel"
path = "examples/micro_kernel.rs"
[[example]]
name = "soa_rs_interop"
path = "examples/soa_rs_interop.rs"
[[example]]
name = "spheres"
path = "examples/spheres.rs"
[[example]]
name = "sve_check"
path = "examples/sve_check.rs"
[[test]]
name = "gang_combinators"
path = "tests/gang_combinators.rs"
[[test]]
name = "gemm_parity"
path = "tests/gemm_parity.rs"
[[test]]
name = "glam_ext"
path = "tests/glam_ext.rs"
[[test]]
name = "half_backends"
path = "tests/half_backends.rs"
[[test]]
name = "ilp"
path = "tests/ilp.rs"
[[test]]
name = "int_kernels"
path = "tests/int_kernels.rs"
[[test]]
name = "int_lanes"
path = "tests/int_lanes.rs"
[[test]]
name = "kernel_macro"
path = "tests/kernel_macro.rs"
[[test]]
name = "sme_mma"
path = "tests/sme_mma.rs"
[[test]]
name = "soa_rs_interop"
path = "tests/soa_rs_interop.rs"
[[test]]
name = "spheres_parity"
path = "tests/spheres_parity.rs"
[[test]]
name = "varying_helpers"
path = "tests/varying_helpers.rs"
[[bench]]
name = "combinators_vs_wide"
path = "benches/combinators_vs_wide.rs"
harness = false
[[bench]]
name = "gemm_accel_toggle"
path = "benches/gemm_accel_toggle.rs"
harness = false
[[bench]]
name = "map_ilp"
path = "benches/map_ilp.rs"
harness = false
[[bench]]
name = "mat3_inverse_vs_wide"
path = "benches/mat3_inverse_vs_wide.rs"
harness = false
required-features = ["glam"]
[[bench]]
name = "micro_vs_wide"
path = "benches/micro_vs_wide.rs"
harness = false
[dependencies.glam]
version = "0.32"
optional = true
default-features = false
[dependencies.half]
version = "2"
features = ["num-traits"]
default-features = false
[dependencies.hydroplane-macros]
version = "0.1.0"
[dependencies.libm]
version = "0.2"
optional = true
[dependencies.num-traits]
version = "0.2.19"
default-features = false
[dev-dependencies.criterion]
version = "0.8.2"
features = ["cargo_bench_support"]
default-features = false
[dev-dependencies.rand]
version = "0.9"
[dev-dependencies.soa-rs]
version = "1.0.0"
[dev-dependencies.wide]
version = "1.5.0"
[target.'cfg(target_arch = "spirv")'.dependencies.spirv-std]
version = "=0.10.0-alpha.1"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
'cfg(target_arch, values("spirv"))',
"cfg(hp_no_apple_accelerate)",
"cfg(hp_no_sve)",
"cfg(hp_no_sme)",
"cfg(hp_no_amx)",
"cfg(hp_no_ilp)",
"cfg(hp_no_avx)",
"cfg(hp_no_avx512)",
"cfg(hp_static_dispatch)",
"cfg(hp_neon_over_sve)",
"cfg(hp_analyze)",
"cfg(hp_resolved_unroll)",
]