use crate::ir::{macros::cpa, Scope, Variable, Vectorization};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[allow(missing_docs)]
pub struct WriteGlobal {
pub input: Variable,
pub global: Variable,
pub position: Variable,
}
impl WriteGlobal {
#[allow(missing_docs)]
pub fn expand(self, scope: &mut Scope) {
let output = self.global;
let input = self.input;
let position = self.position;
cpa!(scope, output[position] = input);
}
pub(crate) fn vectorize(&self, vectorization: Vectorization) -> Self {
Self {
input: self.input.vectorize(vectorization),
global: self.global.vectorize(vectorization),
position: self.position,
}
}
}