cubecl_cpp/metal/
variable.rs

1use crate::{Dialect, shared::Variable};
2
3use super::BuiltInAttribute;
4
5impl<D: Dialect> Variable<D> {
6    pub fn attribute(&self) -> BuiltInAttribute {
7        match self {
8            Variable::AbsolutePosBaseName => BuiltInAttribute::ThreadPositionInGrid,
9            Variable::CubeCountBaseName => BuiltInAttribute::ThreadgroupsPerGrid,
10            Variable::CubeDimBaseName => BuiltInAttribute::ThreadsPerThreadgroup,
11            Variable::CubePosBaseName => BuiltInAttribute::ThreadgroupPositionInGrid,
12            Variable::PlaneDim => BuiltInAttribute::ThreadsPerSIMDgroup,
13            Variable::PlanePos => BuiltInAttribute::SIMDgroupIndexInThreadgroup,
14            Variable::UnitPosBaseName => BuiltInAttribute::ThreadPositionInThreadgroup,
15            Variable::UnitPos => BuiltInAttribute::ThreadIndexInThreadgroup,
16            Variable::UnitPosPlane => BuiltInAttribute::ThreadIndexInSIMDgroup,
17            _ => BuiltInAttribute::None,
18        }
19    }
20}