vyre_reference/dual_impls/bitwise/shift_left/reference.rs
1use crate::{dual_impls::common, workgroup::Memory};
2use vyre_primitives::ShiftLeft;
3
4impl common::ReferenceEvaluator for ShiftLeft {
5 fn evaluate(&self, inputs: &[Memory]) -> Result<Memory, common::EvalError> {
6 let (left, right) = common::two_inputs(inputs, "shift_left")?;
7 let shift = common::read_u32(right, "shift_left")? & 31;
8 Ok(common::scalar(
9 common::read_u32(left, "shift_left")? << shift,
10 ))
11 }
12}