pub mod access_patterns;
pub mod alignment;
pub mod cache_layout;
pub mod memory_placement;
pub use alignment::{align_data, AlignmentStrategy};
pub use cache_layout::{optimize_layout, LayoutStrategy};
pub use memory_placement::{optimize_placement, PlacementStrategy};
pub use access_patterns::{
cache_aware_binary_op, cache_aware_copy, cache_aware_transform, detect_layout, AccessPattern,
AccessStats, Block, BlockedIterator, CacheConfig, CacheLevel, MemoryLayout, OptimizationHints,
StrideOptimizer, Tile2D, TiledIterator2D,
};
pub fn optimize_memory<T: Copy>(
data: &mut [T],
layout: LayoutStrategy,
placement: PlacementStrategy,
) {
optimize_layout(data, layout);
optimize_placement(data, placement);
}