eeric/rv_core/instruction/executor/v/vmandn.rs
1use crate::rv_core::instruction::executor::prelude::*;
2
3pub fn mm(
4 Opmvv {
5 dest: vd,
6 vs1,
7 vs2,
8 vm: _,
9 }: Opmvv,
10 v: &mut VectorContext<'_>,
11) {
12 let vreg = izip!(
13 v.get(vd).iter_eew(),
14 v.get(vs2).iter_mask(),
15 v.get(vs1).iter_mask(),
16 )
17 .map(|(vd, vs2, vs1)| vd.with_mask_bit(vs2 & !vs1))
18 .collect_with_eew(v.vec_engine.sew);
19
20 v.apply(vd, vreg);
21}