vyre_reference/dual_impls/bitwise/shift_left/mod.rs
1/// Left-shift dual implementation reference.
2pub mod reference;
3
4/// Operation ID for left-shift dual references.
5pub const OP_ID: &str = "primitive.bitwise.shift_left";
6
7/// Direct word-oriented left-shift reference.
8pub mod reference_a {
9 /// Evaluate `left << (right & 31)` over two little-endian u32 inputs.
10 #[must_use]
11 pub fn reference(input: &[u8]) -> Vec<u8> {
12 super::super::common::binary_direct(input, |left, right| left << (right & 31))
13 }
14}
15
16/// Independent bit-walk left-shift reference.
17pub mod reference_b {
18 /// Evaluate left shift without using the native shift operator on the full word.
19 #[must_use]
20 pub fn reference(input: &[u8]) -> Vec<u8> {
21 super::super::common::shift_left_bits(input)
22 }
23}