Extend interface with masking operations.
Opened this issue · 0 comments
edanor commented
Originally reported by: edanor (Bitbucket: edanor, GitHub: edanor)
As for other interfaces, masks should also implement MFI functions with masking operand. An example where it causes problems comes from VecGeom:
VECGEOM_FORCE_INLINE
void MaskedAssign(UmesimdBool_v const &cond, UmesimdBool_v const &thenval, UmesimdBool_v *const output)
{
//output->assign(cond, thenval);
UmesimdBool_v out_v;
out_v.assign(*output);
UmesimdBool_v t0 = cond.land(thenval);
UmesimdBool_v t1 = (!cond).land(out_v);
UmesimdBool_v t2 = t0 || t1;
output->assign(t2);
}
here the overloaded 'MaskedAssign' operation tries to perform blending between two masks.
If usage model comes from the users it should be provided automatically.