Skip to main content

CacheOptPass

Struct CacheOptPass 

Source
pub struct CacheOptPass {
    pub config: CacheOptConfig,
    pub report: CacheOptReport,
}
Expand description

The top-level cache-aware / data-locality optimization pass.

Usage:

use oxilean_codegen::opt_cache::{CacheOptConfig, CacheOptPass};
let mut pass = CacheOptPass::new(CacheOptConfig::default());
// pass.run(&mut decls);

Fields§

§config: CacheOptConfig

Configuration for this pass.

§report: CacheOptReport

Accumulated report from the last run call.

Implementations§

Source§

impl CacheOptPass

Source

pub fn new(config: CacheOptConfig) -> Self

Creates a new CacheOptPass with the given configuration.

Source

pub fn run(&mut self, decls: &mut [LcnfFunDecl])

Runs all cache optimizations over the provided function declarations.

Source

pub fn analyze_locality(&self, decl: &LcnfFunDecl) -> DataLocalityInfo

Analyses data locality for a single function declaration.

Source

pub fn apply_loop_tiling(&self, decl: &mut LcnfFunDecl, tiles: &[LoopTile])

Applies loop tiling annotations to a function declaration.

In the LCNF IR there are no explicit loop constructs, so this pass records the tiling decision metadata for downstream backends to act on. The body is traversed and Proj accesses on tiled variables are annotated via a comment in the surrounding let binding name hint.

Source

pub fn reorder_data_structures(&self, decl: &mut LcnfFunDecl)

Reorders struct fields for improved spatial locality.

Uses FieldReorderingAnalysis to collect layout information, then records the reordering decision as metadata on the declaration.

Trait Implementations§

Source§

impl Default for CacheOptPass

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.