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}